V8 Project
v8::internal::maglev::MaglevAssembler Class Reference

#include <maglev-assembler.h>

+ Inheritance diagram for v8::internal::maglev::MaglevAssembler:
+ Collaboration diagram for v8::internal::maglev::MaglevAssembler:

Classes

class  TemporaryRegisterScope
 
class  TemporaryRegisterScopeBase
 

Public Types

enum  StoreMode { kField , kElement }
 
enum  ValueIsCompressed { kValueIsDecompressed , kValueIsCompressed }
 
enum  ValueCanBeSmi { kValueCannotBeSmi , kValueCanBeSmi }
 
enum class  CharCodeMaskMode { kValueIsInRange , kMustApplyMask }
 
template<StoreMode store_mode>
using OffsetTypeFor = std::conditional_t< store_mode==kField, int, Register >
 
- Public Types inherited from v8::internal::MacroAssembler
enum class  PushArrayOrder {
  kNormal , kReverse , kNormal , kReverse ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kNormal , kReverse
}
 
enum  CopyDoubleWordsMode { kDstLessThanSrc , kSrcLessThanDst , kDstLessThanSrcAndReverse }
 
enum  LoadLRMode { kAuthLR , kDontLoadLR }
 
enum  StoreLRMode { kSignLR , kDontStoreLR }
 
enum  AdrHint { kAdrNear , kAdrFar }
 
enum class  PushArrayOrder {
  kNormal , kReverse , kNormal , kReverse ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kNormal , kReverse
}
 
enum  PushArrayOrder {
  kNormal , kReverse , kNormal , kReverse ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kNormal , kReverse
}
 
enum  StackLimitKind { kInterruptStackLimit , kRealStackLimit , kInterruptStackLimit , kRealStackLimit }
 
enum  PushArrayOrder {
  kNormal , kReverse , kNormal , kReverse ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kNormal , kReverse
}
 
enum  StackLimitKind { kInterruptStackLimit , kRealStackLimit , kInterruptStackLimit , kRealStackLimit }
 
enum  PushArrayOrder {
  kNormal , kReverse , kNormal , kReverse ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kNormal , kReverse
}
 
enum  PushArrayOrder {
  kNormal , kReverse , kNormal , kReverse ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kNormal , kReverse
}
 
enum  ArgumentsCountMode { kCountIncludesReceiver , kCountExcludesReceiver }
 
enum  ArgumentsCountType { kCountIsInteger , kCountIsSmi }
 
enum  PushArrayOrder {
  kNormal , kReverse , kNormal , kReverse ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kNormal , kReverse
}
 
enum class  PushArrayOrder {
  kNormal , kReverse , kNormal , kReverse ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kNormal , kNormal , kNormal ,
  kNormal , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kReverse , kReverse ,
  kReverse , kReverse , kNormal , kReverse
}
 
enum class  IsolateRootLocation { kInScratchRegister , kInRootRegister }
 
using Trapper = std::function< void(int)>
 
- Public Types inherited from v8::internal::MacroAssemblerBase
enum class  RecordWriteCallMode { kDefault , kWasm }
 
- Public Types inherited from v8::internal::Assembler
enum  NopMarkerTypes {
  NON_MARKING_NOP = 0 , DEBUG_BREAK_NOP , PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT ,
  PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE , LAST_CODE_MARKER , FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , DEBUG_BREAK_NOP ,
  INTERRUPT_CODE_NOP , ADR_FAR_NOP , FIRST_NOP_MARKER = DEBUG_BREAK_NOP , LAST_NOP_MARKER = ADR_FAR_NOP ,
  NON_MARKING_NOP = 0 , DEBUG_BREAK_NOP , PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT ,
  PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE , LAST_CODE_MARKER , FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , NON_MARKING_NOP = 0 ,
  DEBUG_BREAK_NOP , PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT , PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE ,
  LAST_CODE_MARKER , FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , NON_MARKING_NOP = 0 , GROUP_ENDING_NOP ,
  DEBUG_BREAK_NOP , PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT , PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE ,
  LAST_CODE_MARKER , FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , NON_MARKING_NOP = 0 , DEBUG_BREAK_NOP ,
  PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT , PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE , LAST_CODE_MARKER ,
  FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , NON_MARKING_NOP = 0 , GROUP_ENDING_NOP , DEBUG_BREAK_NOP ,
  PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT , PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE , LAST_CODE_MARKER ,
  FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED
}
 
enum  ConstantPoolMode { NEEDS_POOL_ENTRY , NO_POOL_ENTRY }
 
enum  NopMarkerTypes {
  NON_MARKING_NOP = 0 , DEBUG_BREAK_NOP , PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT ,
  PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE , LAST_CODE_MARKER , FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , DEBUG_BREAK_NOP ,
  INTERRUPT_CODE_NOP , ADR_FAR_NOP , FIRST_NOP_MARKER = DEBUG_BREAK_NOP , LAST_NOP_MARKER = ADR_FAR_NOP ,
  NON_MARKING_NOP = 0 , DEBUG_BREAK_NOP , PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT ,
  PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE , LAST_CODE_MARKER , FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , NON_MARKING_NOP = 0 ,
  DEBUG_BREAK_NOP , PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT , PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE ,
  LAST_CODE_MARKER , FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , NON_MARKING_NOP = 0 , GROUP_ENDING_NOP ,
  DEBUG_BREAK_NOP , PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT , PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE ,
  LAST_CODE_MARKER , FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , NON_MARKING_NOP = 0 , DEBUG_BREAK_NOP ,
  PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT , PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE , LAST_CODE_MARKER ,
  FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , NON_MARKING_NOP = 0 , GROUP_ENDING_NOP , DEBUG_BREAK_NOP ,
  PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT , PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE , LAST_CODE_MARKER ,
  FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED
}
 
enum  OffsetSize : int {
  kOffset26 = 26 , kOffset21 = 21 , kOffset20 = 20 , kOffset16 = 16 ,
  kOffset26 = 26 , kOffset21 = 21 , kOffset16 = 16
}
 
enum  NopMarkerTypes {
  NON_MARKING_NOP = 0 , DEBUG_BREAK_NOP , PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT ,
  PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE , LAST_CODE_MARKER , FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , DEBUG_BREAK_NOP ,
  INTERRUPT_CODE_NOP , ADR_FAR_NOP , FIRST_NOP_MARKER = DEBUG_BREAK_NOP , LAST_NOP_MARKER = ADR_FAR_NOP ,
  NON_MARKING_NOP = 0 , DEBUG_BREAK_NOP , PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT ,
  PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE , LAST_CODE_MARKER , FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , NON_MARKING_NOP = 0 ,
  DEBUG_BREAK_NOP , PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT , PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE ,
  LAST_CODE_MARKER , FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , NON_MARKING_NOP = 0 , GROUP_ENDING_NOP ,
  DEBUG_BREAK_NOP , PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT , PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE ,
  LAST_CODE_MARKER , FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , NON_MARKING_NOP = 0 , DEBUG_BREAK_NOP ,
  PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT , PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE , LAST_CODE_MARKER ,
  FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , NON_MARKING_NOP = 0 , GROUP_ENDING_NOP , DEBUG_BREAK_NOP ,
  PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT , PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE , LAST_CODE_MARKER ,
  FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED
}
 
enum  OffsetSize : int {
  kOffset26 = 26 , kOffset21 = 21 , kOffset20 = 20 , kOffset16 = 16 ,
  kOffset26 = 26 , kOffset21 = 21 , kOffset16 = 16
}
 
enum  NopMarkerTypes {
  NON_MARKING_NOP = 0 , DEBUG_BREAK_NOP , PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT ,
  PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE , LAST_CODE_MARKER , FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , DEBUG_BREAK_NOP ,
  INTERRUPT_CODE_NOP , ADR_FAR_NOP , FIRST_NOP_MARKER = DEBUG_BREAK_NOP , LAST_NOP_MARKER = ADR_FAR_NOP ,
  NON_MARKING_NOP = 0 , DEBUG_BREAK_NOP , PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT ,
  PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE , LAST_CODE_MARKER , FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , NON_MARKING_NOP = 0 ,
  DEBUG_BREAK_NOP , PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT , PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE ,
  LAST_CODE_MARKER , FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , NON_MARKING_NOP = 0 , GROUP_ENDING_NOP ,
  DEBUG_BREAK_NOP , PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT , PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE ,
  LAST_CODE_MARKER , FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , NON_MARKING_NOP = 0 , DEBUG_BREAK_NOP ,
  PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT , PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE , LAST_CODE_MARKER ,
  FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , NON_MARKING_NOP = 0 , GROUP_ENDING_NOP , DEBUG_BREAK_NOP ,
  PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT , PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE , LAST_CODE_MARKER ,
  FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED
}
 
enum  NopMarkerTypes {
  NON_MARKING_NOP = 0 , DEBUG_BREAK_NOP , PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT ,
  PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE , LAST_CODE_MARKER , FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , DEBUG_BREAK_NOP ,
  INTERRUPT_CODE_NOP , ADR_FAR_NOP , FIRST_NOP_MARKER = DEBUG_BREAK_NOP , LAST_NOP_MARKER = ADR_FAR_NOP ,
  NON_MARKING_NOP = 0 , DEBUG_BREAK_NOP , PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT ,
  PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE , LAST_CODE_MARKER , FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , NON_MARKING_NOP = 0 ,
  DEBUG_BREAK_NOP , PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT , PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE ,
  LAST_CODE_MARKER , FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , NON_MARKING_NOP = 0 , GROUP_ENDING_NOP ,
  DEBUG_BREAK_NOP , PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT , PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE ,
  LAST_CODE_MARKER , FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , NON_MARKING_NOP = 0 , DEBUG_BREAK_NOP ,
  PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT , PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE , LAST_CODE_MARKER ,
  FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , NON_MARKING_NOP = 0 , GROUP_ENDING_NOP , DEBUG_BREAK_NOP ,
  PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT , PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE , LAST_CODE_MARKER ,
  FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED
}
 
enum  NopMarkerTypes {
  NON_MARKING_NOP = 0 , DEBUG_BREAK_NOP , PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT ,
  PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE , LAST_CODE_MARKER , FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , DEBUG_BREAK_NOP ,
  INTERRUPT_CODE_NOP , ADR_FAR_NOP , FIRST_NOP_MARKER = DEBUG_BREAK_NOP , LAST_NOP_MARKER = ADR_FAR_NOP ,
  NON_MARKING_NOP = 0 , DEBUG_BREAK_NOP , PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT ,
  PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE , LAST_CODE_MARKER , FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , NON_MARKING_NOP = 0 ,
  DEBUG_BREAK_NOP , PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT , PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE ,
  LAST_CODE_MARKER , FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , NON_MARKING_NOP = 0 , GROUP_ENDING_NOP ,
  DEBUG_BREAK_NOP , PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT , PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE ,
  LAST_CODE_MARKER , FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , NON_MARKING_NOP = 0 , DEBUG_BREAK_NOP ,
  PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT , PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE , LAST_CODE_MARKER ,
  FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , NON_MARKING_NOP = 0 , GROUP_ENDING_NOP , DEBUG_BREAK_NOP ,
  PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT , PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE , LAST_CODE_MARKER ,
  FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED
}
 
enum  NopMarkerTypes {
  NON_MARKING_NOP = 0 , DEBUG_BREAK_NOP , PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT ,
  PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE , LAST_CODE_MARKER , FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , DEBUG_BREAK_NOP ,
  INTERRUPT_CODE_NOP , ADR_FAR_NOP , FIRST_NOP_MARKER = DEBUG_BREAK_NOP , LAST_NOP_MARKER = ADR_FAR_NOP ,
  NON_MARKING_NOP = 0 , DEBUG_BREAK_NOP , PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT ,
  PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE , LAST_CODE_MARKER , FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , NON_MARKING_NOP = 0 ,
  DEBUG_BREAK_NOP , PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT , PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE ,
  LAST_CODE_MARKER , FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , NON_MARKING_NOP = 0 , GROUP_ENDING_NOP ,
  DEBUG_BREAK_NOP , PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT , PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE ,
  LAST_CODE_MARKER , FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , NON_MARKING_NOP = 0 , DEBUG_BREAK_NOP ,
  PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT , PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE , LAST_CODE_MARKER ,
  FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED , NON_MARKING_NOP = 0 , GROUP_ENDING_NOP , DEBUG_BREAK_NOP ,
  PROPERTY_ACCESS_INLINED , PROPERTY_ACCESS_INLINED_CONTEXT , PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE , LAST_CODE_MARKER ,
  FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED
}
 
enum  SIMDPrefix {
  kNoPrefix = 0x0 , k66 = 0x1 , kF3 = 0x2 , kF2 = 0x3 ,
  kNoPrefix = 0x0 , k66 = 0x1 , kF3 = 0x2 , kF2 = 0x3
}
 
enum  VectorLength {
  kL128 = 0x0 , kL256 = 0x4 , kLIG = kL128 , kLZ = kL128 ,
  kL128 = 0x0 , kL256 = 0x4 , kLIG = kL128 , kLZ = kL128
}
 
enum  VexW {
  kW0 = 0x0 , kW1 = 0x80 , kWIG = kW0 , kW0 = 0x0 ,
  kW1 = 0x80 , kWIG = kW0
}
 
enum  LeadingOpcode {
  k0F = 0x1 , k0F38 = 0x2 , k0F3A = 0x3 , k0F = 0x1 ,
  k0F38 = 0x2 , k0F3A = 0x3
}
 
using BlockConstPoolScope = ConstantPool::BlockScope
 
using BlockConstPoolScope = ConstantPool::BlockScope
 

Public Member Functions

 MaglevAssembler (Isolate *isolate, Zone *zone, MaglevCodeGenState *code_gen_state)
 
MemOperand GetStackSlot (const compiler::AllocatedOperand &operand)
 
MemOperand ToMemOperand (const compiler::InstructionOperand &operand)
 
MemOperand ToMemOperand (const ValueLocation &location)
 
Register GetFramePointer ()
 
int GetFramePointerOffsetForStackSlot (const compiler::AllocatedOperand &operand)
 
template<typename Dest , typename Source >
void MoveRepr (MachineRepresentation repr, Dest dst, Source src)
 
void Allocate (RegisterSnapshot register_snapshot, Register result, int size_in_bytes, AllocationType alloc_type=AllocationType::kYoung, AllocationAlignment alignment=kTaggedAligned)
 
void Allocate (RegisterSnapshot register_snapshot, Register result, Register size_in_bytes, AllocationType alloc_type=AllocationType::kYoung, AllocationAlignment alignment=kTaggedAligned)
 
void AllocateHeapNumber (RegisterSnapshot register_snapshot, Register result, DoubleRegister value)
 
void AllocateTwoByteString (RegisterSnapshot register_snapshot, Register result, int length)
 
void LoadSingleCharacterString (Register result, int char_code)
 
void LoadSingleCharacterString (Register result, Register char_code, Register scratch)
 
void EnsureWritableFastElements (RegisterSnapshot register_snapshot, Register elements, Register object, Register scratch)
 
void BindJumpTarget (Label *label)
 
void BindBlock (BasicBlock *block)
 
Condition IsRootConstant (Input input, RootIndex root_index)
 
void Branch (Condition condition, BasicBlock *if_true, BasicBlock *if_false, BasicBlock *next_block)
 
void Branch (Condition condition, Label *if_true, Label::Distance true_distance, bool fallthrough_when_true, Label *if_false, Label::Distance false_distance, bool fallthrough_when_false)
 
Register FromAnyToRegister (const Input &input, Register scratch)
 
void LoadTaggedField (Register result, MemOperand operand)
 
void LoadTaggedField (Register result, Register object, int offset)
 
void LoadTaggedFieldWithoutDecompressing (Register result, Register object, int offset)
 
void LoadTaggedSignedField (Register result, MemOperand operand)
 
void LoadTaggedSignedField (Register result, Register object, int offset)
 
void LoadAndUntagTaggedSignedField (Register result, Register object, int offset)
 
void LoadTaggedFieldByIndex (Register result, Register object, Register index, int scale, int offset)
 
void LoadBoundedSizeFromObject (Register result, Register object, int offset)
 
void LoadExternalPointerField (Register result, MemOperand operand)
 
void LoadFixedArrayElement (Register result, Register array, Register index)
 
void LoadFixedArrayElementWithoutDecompressing (Register result, Register array, Register index)
 
void LoadFixedDoubleArrayElement (DoubleRegister result, Register array, Register index)
 
void StoreFixedDoubleArrayElement (Register array, Register index, DoubleRegister value)
 
void LoadSignedField (Register result, MemOperand operand, int element_size)
 
void LoadUnsignedField (Register result, MemOperand operand, int element_size)
 
template<typename BitField >
void LoadBitField (Register result, MemOperand operand)
 
void SetSlotAddressForTaggedField (Register slot_reg, Register object, int offset)
 
void SetSlotAddressForFixedArrayElement (Register slot_reg, Register object, Register index)
 
template<StoreMode store_mode>
void CheckAndEmitDeferredWriteBarrier (Register object, OffsetTypeFor< store_mode > offset, Register value, RegisterSnapshot register_snapshot, ValueIsCompressed value_is_compressed, ValueCanBeSmi value_can_be_smi)
 
void CheckAndEmitDeferredIndirectPointerWriteBarrier (Register object, int offset, Register value, RegisterSnapshot register_snapshot, IndirectPointerTag tag)
 
void StoreTaggedFieldWithWriteBarrier (Register object, int offset, Register value, RegisterSnapshot register_snapshot, ValueIsCompressed value_is_compressed, ValueCanBeSmi value_can_be_smi)
 
void StoreTaggedFieldNoWriteBarrier (Register object, int offset, Register value)
 
void StoreTaggedSignedField (Register object, int offset, Register value)
 
void StoreTaggedSignedField (Register object, int offset, Tagged< Smi > value)
 
void StoreInt32Field (Register object, int offset, int32_t value)
 
void AssertElidedWriteBarrier (Register object, Register value, RegisterSnapshot snapshot)
 
void StoreField (MemOperand operand, Register value, int element_size)
 
void ReverseByteOrder (Register value, int element_size)
 
void BuildTypedArrayDataPointer (Register data_pointer, Register object)
 
MemOperand TypedArrayElementOperand (Register data_pointer, Register index, int element_size)
 
MemOperand DataViewElementOperand (Register data_pointer, Register index)
 
void StringCharCodeOrCodePointAt (BuiltinStringPrototypeCharCodeOrCodePointAt::Mode mode, RegisterSnapshot &register_snapshot, Register result, Register string, Register index, Register scratch1, Register scratch2, Label *result_fits_one_byte)
 
void SeqOneByteStringCharCodeAt (Register result, Register string, Register index)
 
void StringFromCharCode (RegisterSnapshot register_snapshot, Label *char_code_fits_one_byte, Register result, Register char_code, Register scratch, CharCodeMaskMode mask_mode)
 
void ToBoolean (Register value, CheckType check_type, ZoneLabelRef is_true, ZoneLabelRef is_false, bool fallthrough_when_true)
 
void TestTypeOf (Register object, interpreter::TestTypeOfFlags::LiteralFlag literal, Label *if_true, Label::Distance true_distance, bool fallthrough_when_true, Label *if_false, Label::Distance false_distance, bool fallthrough_when_false)
 
void SmiTagInt32AndJumpIfFail (Register dst, Register src, Label *fail, Label::Distance distance=Label::kFar)
 
void SmiTagInt32AndJumpIfFail (Register reg, Label *fail, Label::Distance distance=Label::kFar)
 
void SmiTagInt32AndJumpIfSuccess (Register dst, Register src, Label *success, Label::Distance distance=Label::kFar)
 
void SmiTagInt32AndJumpIfSuccess (Register reg, Label *success, Label::Distance distance=Label::kFar)
 
void UncheckedSmiTagInt32 (Register dst, Register src)
 
void UncheckedSmiTagInt32 (Register reg)
 
void SmiTagUint32AndJumpIfFail (Register dst, Register src, Label *fail, Label::Distance distance=Label::kFar)
 
void SmiTagUint32AndJumpIfFail (Register reg, Label *fail, Label::Distance distance=Label::kFar)
 
void SmiTagIntPtrAndJumpIfFail (Register dst, Register src, Label *fail, Label::Distance distance=Label::kFar)
 
void SmiTagUint32AndJumpIfSuccess (Register dst, Register src, Label *success, Label::Distance distance=Label::kFar)
 
void SmiTagUint32AndJumpIfSuccess (Register reg, Label *success, Label::Distance distance=Label::kFar)
 
void SmiTagIntPtrAndJumpIfSuccess (Register dst, Register src, Label *success, Label::Distance distance=Label::kFar)
 
void UncheckedSmiTagUint32 (Register dst, Register src)
 
void UncheckedSmiTagUint32 (Register reg)
 
void CheckInt32IsSmi (Register obj, Label *fail, Register scratch=Register::no_reg())
 
void CheckIntPtrIsSmi (Register obj, Label *fail, Label::Distance distance=Label::kFar)
 
void SmiAddConstant (Register dst, Register src, int value, Label *fail, Label::Distance distance=Label::kFar)
 
void SmiAddConstant (Register reg, int value, Label *fail, Label::Distance distance=Label::kFar)
 
void SmiSubConstant (Register dst, Register src, int value, Label *fail, Label::Distance distance=Label::kFar)
 
void SmiSubConstant (Register reg, int value, Label *fail, Label::Distance distance=Label::kFar)
 
void MoveHeapNumber (Register dst, double value)
 
void TruncateDoubleToInt32 (Register dst, DoubleRegister src)
 
void TryTruncateDoubleToInt32 (Register dst, DoubleRegister src, Label *fail)
 
void TryTruncateDoubleToUint32 (Register dst, DoubleRegister src, Label *fail)
 
void TryChangeFloat64ToIndex (Register result, DoubleRegister value, Label *success, Label *fail)
 
void MaybeEmitPlaceHolderForDeopt ()
 
void DefineLazyDeoptPoint (LazyDeoptInfo *info)
 
void DefineExceptionHandlerPoint (NodeBase *node)
 
void DefineExceptionHandlerAndLazyDeoptPoint (NodeBase *node)
 
template<typename Function , typename... Args>
LabelMakeDeferredCode (Function &&deferred_code_gen, Args &&... args)
 
template<typename Function , typename... Args>
void JumpToDeferredIf (Condition cond, Function &&deferred_code_gen, Args &&... args)
 
void JumpIfNotCallable (Register object, Register scratch, CheckType check_type, Label *target, Label::Distance distance=Label::kFar)
 
void JumpIfUndetectable (Register object, Register scratch, CheckType check_type, Label *target, Label::Distance distance=Label::kFar)
 
void JumpIfNotUndetectable (Register object, Register scratch, CheckType, Label *target, Label::Distance distance=Label::kFar)
 
template<typename NodeT >
LabelGetDeoptLabel (NodeT *node, DeoptimizeReason reason)
 
bool IsDeoptLabel (Label *label)
 
void EmitEagerDeoptStress (Label *label)
 
template<typename NodeT >
void EmitEagerDeopt (NodeT *node, DeoptimizeReason reason)
 
template<typename NodeT >
void EmitEagerDeoptIf (Condition cond, DeoptimizeReason reason, NodeT *node)
 
template<typename NodeT >
void EmitEagerDeoptIfNotEqual (DeoptimizeReason reason, NodeT *node)
 
template<typename NodeT >
void EmitEagerDeoptIfSmi (NodeT *node, Register object, DeoptimizeReason reason)
 
template<typename NodeT >
void EmitEagerDeoptIfNotSmi (NodeT *node, Register object, DeoptimizeReason reason)
 
void MaterialiseValueNode (Register dst, ValueNode *value)
 
void IncrementInt32 (Register reg)
 
void DecrementInt32 (Register reg)
 
void AddInt32 (Register reg, int amount)
 
void AndInt32 (Register reg, int mask)
 
void OrInt32 (Register reg, int mask)
 
void AndInt32 (Register reg, Register other)
 
void OrInt32 (Register reg, Register other)
 
void ShiftLeft (Register reg, int amount)
 
void IncrementAddress (Register reg, int32_t delta)
 
void LoadAddress (Register dst, MemOperand location)
 
void Call (Label *target)
 
void EmitEnterExitFrame (int extra_slots, StackFrame::Type frame_type, Register c_function, Register scratch)
 
MemOperand StackSlotOperand (StackSlot slot)
 
void Move (StackSlot dst, Register src)
 
void Move (StackSlot dst, DoubleRegister src)
 
void Move (Register dst, StackSlot src)
 
void Move (DoubleRegister dst, StackSlot src)
 
void Move (MemOperand dst, Register src)
 
void Move (Register dst, MemOperand src)
 
void Move (DoubleRegister dst, DoubleRegister src)
 
void Move (Register dst, Tagged< Smi > src)
 
void Move (Register dst, ExternalReference src)
 
void Move (Register dst, Register src)
 
void Move (Register dst, Tagged< TaggedIndex > i)
 
void Move (Register dst, int32_t i)
 
void Move (Register dst, uint32_t i)
 
void Move (Register dst, IndirectPointerTag i)
 
void Move (DoubleRegister dst, double n)
 
void Move (DoubleRegister dst, Float64 n)
 
void Move (Register dst, Handle< HeapObject > obj)
 
void MoveTagged (Register dst, Handle< HeapObject > obj)
 
void LoadMapForCompare (Register dst, Register obj)
 
void LoadByte (Register dst, MemOperand src)
 
void LoadInt32 (Register dst, MemOperand src)
 
void StoreInt32 (MemOperand dst, Register src)
 
void LoadFloat32 (DoubleRegister dst, MemOperand src)
 
void StoreFloat32 (MemOperand dst, DoubleRegister src)
 
void LoadFloat64 (DoubleRegister dst, MemOperand src)
 
void StoreFloat64 (MemOperand dst, DoubleRegister src)
 
void LoadUnalignedFloat64 (DoubleRegister dst, Register base, Register index)
 
void LoadUnalignedFloat64AndReverseByteOrder (DoubleRegister dst, Register base, Register index)
 
void StoreUnalignedFloat64 (Register base, Register index, DoubleRegister src)
 
void ReverseByteOrderAndStoreUnalignedFloat64 (Register base, Register index, DoubleRegister src)
 
void SignExtend32To64Bits (Register dst, Register src)
 
void NegateInt32 (Register val)
 
void CountLeadingZerosInt32 (Register dst, Register src)
 
void ToUint8Clamped (Register result, DoubleRegister value, Label *min, Label *max, Label *done)
 
template<typename NodeT >
void DeoptIfBufferDetached (Register array, Register scratch, NodeT *node)
 
Condition IsCallableAndNotUndetectable (Register map, Register scratch)
 
Condition IsNotCallableNorUndetactable (Register map, Register scratch)
 
void LoadInstanceType (Register instance_type, Register heap_object)
 
void JumpIfObjectType (Register heap_object, InstanceType type, Label *target, Label::Distance distance=Label::kFar)
 
void JumpIfNotObjectType (Register heap_object, InstanceType type, Label *target, Label::Distance distance=Label::kFar)
 
void AssertObjectType (Register heap_object, InstanceType type, AbortReason reason)
 
void BranchOnObjectType (Register heap_object, InstanceType type, Label *if_true, Label::Distance true_distance, bool fallthrough_when_true, Label *if_false, Label::Distance false_distance, bool fallthrough_when_false)
 
void JumpIfObjectTypeInRange (Register heap_object, InstanceType lower_limit, InstanceType higher_limit, Label *target, Label::Distance distance=Label::kFar)
 
void JumpIfObjectTypeNotInRange (Register heap_object, InstanceType lower_limit, InstanceType higher_limit, Label *target, Label::Distance distance=Label::kFar)
 
void AssertObjectTypeInRange (Register heap_object, InstanceType lower_limit, InstanceType higher_limit, AbortReason reason)
 
void BranchOnObjectTypeInRange (Register heap_object, InstanceType lower_limit, InstanceType higher_limit, Label *if_true, Label::Distance true_distance, bool fallthrough_when_true, Label *if_false, Label::Distance false_distance, bool fallthrough_when_false)
 
void JumpIfJSAnyIsNotPrimitive (Register heap_object, Label *target, Label::Distance distance=Label::kFar)
 
void JumpIfStringMap (Register map, Label *target, Label::Distance distance=Label::kFar, bool jump_if_true=true)
 
void JumpIfSeqOneByteStringMap (Register map, Label *target, Label::Distance distance=Label::kFar, bool jump_if_true=true)
 
void JumpIfString (Register heap_object, Label *target, Label::Distance distance=Label::kFar)
 
void JumpIfNotString (Register heap_object, Label *target, Label::Distance distance=Label::kFar)
 
void JumpIfNotSeqOneByteString (Register heap_object, Label *target, Label::Distance distance=Label::kFar)
 
void CheckJSAnyIsStringAndBranch (Register heap_object, Label *if_true, Label::Distance true_distance, bool fallthrough_when_true, Label *if_false, Label::Distance false_distance, bool fallthrough_when_false)
 
void CompareMapWithRoot (Register object, RootIndex index, Register scratch)
 
void CompareInstanceTypeAndJumpIf (Register map, InstanceType type, Condition cond, Label *target, Label::Distance distance)
 
void CompareInstanceType (Register map, InstanceType instance_type)
 
void CompareInstanceTypeRange (Register map, InstanceType lower_limit, InstanceType higher_limit)
 
Condition CompareInstanceTypeRange (Register map, Register instance_type_out, InstanceType lower_limit, InstanceType higher_limit)
 
template<typename NodeT >
void CompareInstanceTypeRangeAndEagerDeoptIf (Register map, Register instance_type_out, InstanceType lower_limit, InstanceType higher_limit, Condition cond, DeoptimizeReason reason, NodeT *node)
 
template<typename NodeT >
void CompareRootAndEmitEagerDeoptIf (Register reg, RootIndex index, Condition cond, DeoptimizeReason reason, NodeT *node)
 
template<typename NodeT >
void CompareMapWithRootAndEmitEagerDeoptIf (Register reg, RootIndex index, Register scratch, Condition cond, DeoptimizeReason reason, NodeT *node)
 
template<typename NodeT >
void CompareTaggedRootAndEmitEagerDeoptIf (Register reg, RootIndex index, Condition cond, DeoptimizeReason reason, NodeT *node)
 
template<typename NodeT >
void CompareUInt32AndEmitEagerDeoptIf (Register reg, int imm, Condition cond, DeoptimizeReason reason, NodeT *node)
 
void CompareTaggedAndJumpIf (Register reg, Tagged< Smi > smi, Condition cond, Label *target, Label::Distance distance=Label::kFar)
 
void CompareTaggedAndJumpIf (Register reg, Handle< HeapObject > obj, Condition cond, Label *target, Label::Distance distance=Label::kFar)
 
void CompareTaggedAndJumpIf (Register src1, Register src2, Condition cond, Label *target, Label::Distance distance=Label::kFar)
 
void CompareFloat64AndJumpIf (DoubleRegister src1, DoubleRegister src2, Condition cond, Label *target, Label *nan_failed, Label::Distance distance=Label::kFar)
 
void CompareFloat64AndBranch (DoubleRegister src1, DoubleRegister src2, Condition cond, BasicBlock *if_true, BasicBlock *if_false, BasicBlock *next_block, BasicBlock *nan_failed)
 
void PrepareCallCFunction (int num_reg_arguments, int num_double_registers=0)
 
void CallSelf ()
 
void CallBuiltin (Builtin builtin)
 
template<Builtin kBuiltin, typename... Args>
void CallBuiltin (Args &&... args)
 
void CallRuntime (Runtime::FunctionId fid)
 
void CallRuntime (Runtime::FunctionId fid, int num_args)
 
void Jump (Label *target, Label::Distance distance=Label::kFar)
 
void JumpToDeopt (Label *target)
 
void JumpIf (Condition cond, Label *target, Label::Distance distance=Label::kFar)
 
void JumpIfRoot (Register with, RootIndex index, Label *if_equal, Label::Distance distance=Label::kFar)
 
void JumpIfNotRoot (Register with, RootIndex index, Label *if_not_equal, Label::Distance distance=Label::kFar)
 
void JumpIfSmi (Register src, Label *on_smi, Label::Distance near_jump=Label::kFar)
 
void JumpIfNotSmi (Register src, Label *on_not_smi, Label::Distance near_jump=Label::kFar)
 
void JumpIfByte (Condition cc, Register value, int32_t byte, Label *target, Label::Distance distance=Label::kFar)
 
void Float64SilenceNan (DoubleRegister value)
 
void JumpIfHoleNan (DoubleRegister value, Register scratch, Label *target, Label::Distance distance=Label::kFar)
 
void JumpIfNotHoleNan (DoubleRegister value, Register scratch, Label *target, Label::Distance distance=Label::kFar)
 
void JumpIfNan (DoubleRegister value, Label *target, Label::Distance distance=Label::kFar)
 
void JumpIfNotNan (DoubleRegister value, Label *target, Label::Distance distance=Label::kFar)
 
void JumpIfNotHoleNan (MemOperand operand, Label *target, Label::Distance distance=Label::kFar)
 
void CompareInt32AndJumpIf (Register r1, Register r2, Condition cond, Label *target, Label::Distance distance=Label::kFar)
 
void CompareIntPtrAndJumpIf (Register r1, Register r2, Condition cond, Label *target, Label::Distance distance=Label::kFar)
 
void CompareIntPtrAndJumpIf (Register r1, int32_t value, Condition cond, Label *target, Label::Distance distance=Label::kFar)
 
void CompareInt32AndJumpIf (Register r1, int32_t value, Condition cond, Label *target, Label::Distance distance=Label::kFar)
 
void CompareInt32AndBranch (Register r1, int32_t value, Condition cond, BasicBlock *if_true, BasicBlock *if_false, BasicBlock *next_block)
 
void CompareInt32AndBranch (Register r1, Register r2, Condition cond, BasicBlock *if_true, BasicBlock *if_false, BasicBlock *next_block)
 
void CompareInt32AndBranch (Register r1, int32_t value, Condition cond, Label *if_true, Label::Distance true_distance, bool fallthrough_when_true, Label *if_false, Label::Distance false_distance, bool fallthrough_when_false)
 
void CompareInt32AndBranch (Register r1, Register r2, Condition cond, Label *if_true, Label::Distance true_distance, bool fallthrough_when_true, Label *if_false, Label::Distance false_distance, bool fallthrough_when_false)
 
void CompareIntPtrAndBranch (Register r1, int32_t value, Condition cond, BasicBlock *if_true, BasicBlock *if_false, BasicBlock *next_block)
 
void CompareIntPtrAndBranch (Register r1, int32_t value, Condition cond, Label *if_true, Label::Distance true_distance, bool fallthrough_when_true, Label *if_false, Label::Distance false_distance, bool fallthrough_when_false)
 
void CompareInt32AndAssert (Register r1, Register r2, Condition cond, AbortReason reason)
 
void CompareInt32AndAssert (Register r1, int32_t value, Condition cond, AbortReason reason)
 
void CompareSmiAndJumpIf (Register r1, Tagged< Smi > value, Condition cond, Label *target, Label::Distance distance=Label::kFar)
 
void CompareSmiAndAssert (Register r1, Tagged< Smi > value, Condition cond, AbortReason reason)
 
void CompareByteAndJumpIf (MemOperand left, int8_t right, Condition cond, Register scratch, Label *target, Label::Distance distance=Label::kFar)
 
void CompareDoubleAndJumpIfZeroOrNaN (DoubleRegister reg, Label *target, Label::Distance distance=Label::kFar)
 
void CompareDoubleAndJumpIfZeroOrNaN (MemOperand operand, Label *target, Label::Distance distance=Label::kFar)
 
void TestInt32AndJumpIfAnySet (Register r1, int32_t mask, Label *target, Label::Distance distance=Label::kFar)
 
void TestInt32AndJumpIfAnySet (MemOperand operand, int32_t mask, Label *target, Label::Distance distance=Label::kFar)
 
void TestUint8AndJumpIfAnySet (MemOperand operand, uint8_t mask, Label *target, Label::Distance distance=Label::kFar)
 
void TestInt32AndJumpIfAllClear (Register r1, int32_t mask, Label *target, Label::Distance distance=Label::kFar)
 
void TestInt32AndJumpIfAllClear (MemOperand operand, int32_t mask, Label *target, Label::Distance distance=Label::kFar)
 
void TestUint8AndJumpIfAllClear (MemOperand operand, uint8_t mask, Label *target, Label::Distance distance=Label::kFar)
 
void Int32ToDouble (DoubleRegister result, Register src)
 
void Uint32ToDouble (DoubleRegister result, Register src)
 
void SmiToDouble (DoubleRegister result, Register smi)
 
void IntPtrToDouble (DoubleRegister result, Register src)
 
void StringLength (Register result, Register string)
 
void LoadThinStringValue (Register result, Register string)
 
void StoreFixedArrayElementWithWriteBarrier (Register array, Register index, Register value, RegisterSnapshot register_snapshot)
 
void StoreFixedArrayElementNoWriteBarrier (Register array, Register index, Register value)
 
void Pop (Register dst)
 
template<typename... T>
void Push (T... vals)
 
template<typename... T>
void PushReverse (T... vals)
 
void OSRPrologue (Graph *graph)
 
void Prologue (Graph *graph)
 
void FinishCode ()
 
void AssertStackSizeCorrect ()
 
Condition FunctionEntryStackCheck (int stack_check_offset)
 
void SetMapAsRoot (Register object, RootIndex map)
 
void AssertContextCellState (Register cell, ContextCell::State state, Condition condition=kEqual)
 
void LoadContextCellState (Register state, Register cell)
 
void LoadContextCellTaggedValue (Register value, Register cell)
 
void StoreContextCellSmiValue (Register cell, Register value)
 
void LoadContextCellInt32Value (Register value, Register cell)
 
void StoreContextCellInt32Value (Register cell, Register value)
 
void LoadContextCellFloat64Value (DoubleRegister value, Register cell)
 
void StoreContextCellFloat64Value (Register cell, DoubleRegister value)
 
void LoadHeapNumberValue (DoubleRegister result, Register heap_number)
 
void StoreHeapNumberValue (DoubleRegister value, Register heap_number)
 
void LoadHeapNumberOrOddballValue (DoubleRegister result, Register object)
 
void LoadDataField (const PolymorphicAccessInfo &access_info, Register result, Register object, Register scratch)
 
void MaybeEmitDeoptBuiltinsCall (size_t eager_deopt_count, Label *eager_deopt_entry, size_t lazy_deopt_count, Label *lazy_deopt_entry)
 
void TryMigrateInstance (Register object, RegisterSnapshot &register_snapshot, Label *fail)
 
void TryMigrateInstanceAndMarkMapAsMigrationTarget (Register object, RegisterSnapshot &register_snapshot)
 
compiler::NativeContextRef native_context () const
 
MaglevCodeGenStatecode_gen_state () const
 
MaglevSafepointTableBuildersafepoint_table_builder () const
 
MaglevCompilationInfocompilation_info () const
 
TemporaryRegisterScopescratch_register_scope () const
 
template<>
void MoveRepr (MachineRepresentation repr, Register dst, Register src)
 
template<>
void MoveRepr (MachineRepresentation repr, Register dst, MemOperand src)
 
template<>
void MoveRepr (MachineRepresentation repr, MemOperand dst, Register src)
 
template<>
void MoveRepr (MachineRepresentation repr, MemOperand dst, MemOperand src)
 
void Pop (Register dst)
 
void Pop (Register src1, Register src2, Condition cond=al)
 
void Pop (Register src1, Register src2, Register src3, Condition cond=al)
 
void Pop (Register src1, Register src2, Register src3, Register src4, Condition cond=al)
 
template<LoadLRMode lr_mode = kDontLoadLR>
void Pop (const CPURegister &dst0, const CPURegister &dst1=NoReg, const CPURegister &dst2=NoReg, const CPURegister &dst3=NoReg)
 
void Pop (const CPURegister &dst0, const CPURegister &dst1, const CPURegister &dst2, const CPURegister &dst3, const CPURegister &dst4, const CPURegister &dst5=NoReg, const CPURegister &dst6=NoReg, const CPURegister &dst7=NoReg)
 
void Pop (Register dst)
 
void Pop (Operand dst)
 
void Pop (XMMRegister dst, Register scratch)
 
void Pop (Register dst)
 
void Pop (Register src1, Register src2)
 
void Pop (Register src1, Register src2, Register src3)
 
void Pop (Register dst)
 
void Pop (Register src1, Register src2)
 
void Pop (Register src1, Register src2, Register src3)
 
void Pop (uint32_t count=1)
 
void Pop (Register dst)
 
void Pop (Register src1, Register src2)
 
void Pop (Register src1, Register src2, Register src3)
 
void Pop (Register src1, Register src2, Register src3, Register src4)
 
void Pop (Register src1, Register src2, Register src3, Register src4, Register src5)
 
void Pop (Register dst)
 
template<typename... Rs>
void Pop (Register r, Rs... rs)
 
void Pop (uint32_t count=1)
 
void Pop (Register dst)
 
void Pop (Register src1, Register src2)
 
void Pop (Register src1, Register src2, Register src3)
 
void Pop (Register src1, Register src2, Register src3, Register src4)
 
void Pop (Register src1, Register src2, Register src3, Register src4, Register src5)
 
void Pop (Register dst)
 
void Pop (Operand dst)
 
- Public Member Functions inherited from v8::internal::MacroAssembler
void EnterFrame (StackFrame::Type type, bool load_constant_pool_pointer_reg=false)
 
int LeaveFrame (StackFrame::Type type)
 
void AllocateStackSpace (Register bytes)
 
void AllocateStackSpace (int bytes)
 
void PushCommonFrame (Register marker_reg=no_reg)
 
void StubPrologue (StackFrame::Type type)
 
void Prologue ()
 
void DropArguments (Register count)
 
void DropArgumentsAndPushNewReceiver (Register argc, Register receiver)
 
void PushStandardFrame (Register function_reg)
 
void InitializeRootRegister ()
 
void Push (Register src)
 
void Push (Handle< HeapObject > handle)
 
void Push (Tagged< Smi > smi)
 
void Push (Tagged< TaggedIndex > index)
 
void Push (Register src1, Register src2, Condition cond=al)
 
void Push (Register src1, Register src2, Register src3, Condition cond=al)
 
void Push (Register src1, Register src2, Register src3, Register src4, Condition cond=al)
 
void Push (Register src1, Register src2, Register src3, Register src4, Register src5, Condition cond=al)
 
void PushArray (Register array, Register size, Register scratch, PushArrayOrder order=PushArrayOrder::kNormal)
 
void Pop (Register dst)
 
void Pop (Register src1, Register src2, Condition cond=al)
 
void Pop (Register src1, Register src2, Register src3, Condition cond=al)
 
void Pop (Register src1, Register src2, Register src3, Register src4, Condition cond=al)
 
void PrepareCallCFunction (int num_reg_arguments, int num_double_registers=0, Register scratch=no_reg)
 
void MovToFloatParameter (DwVfpRegister src)
 
void MovToFloatParameters (DwVfpRegister src1, DwVfpRegister src2)
 
void MovToFloatResult (DwVfpRegister src)
 
int CallCFunction (ExternalReference function, int num_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, Label *return_label=nullptr)
 
int CallCFunction (Register function, int num_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, Label *return_label=nullptr)
 
int CallCFunction (ExternalReference function, int num_reg_arguments, int num_double_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, Label *return_label=nullptr)
 
int CallCFunction (Register function, int num_reg_arguments, int num_double_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, Label *return_label=nullptr)
 
void MovFromFloatParameter (DwVfpRegister dst)
 
void MovFromFloatResult (DwVfpRegister dst)
 
void Trap ()
 
void DebugBreak ()
 
void Assert (Condition cond, AbortReason reason) NOOP_UNLESS_DEBUG_CODE
 
void AssertUnreachable (AbortReason reason) NOOP_UNLESS_DEBUG_CODE
 
void Check (Condition cond, AbortReason reason)
 
void Abort (AbortReason msg)
 
void LslPair (Register dst_low, Register dst_high, Register src_low, Register src_high, Register shift)
 
void LslPair (Register dst_low, Register dst_high, Register src_low, Register src_high, uint32_t shift)
 
void LsrPair (Register dst_low, Register dst_high, Register src_low, Register src_high, Register shift)
 
void LsrPair (Register dst_low, Register dst_high, Register src_low, Register src_high, uint32_t shift)
 
void AsrPair (Register dst_low, Register dst_high, Register src_low, Register src_high, Register shift)
 
void AsrPair (Register dst_low, Register dst_high, Register src_low, Register src_high, uint32_t shift)
 
void LoadFromConstantsTable (Register destination, int constant_index) final
 
void LoadRootRegisterOffset (Register destination, intptr_t offset) final
 
void LoadRootRelative (Register destination, int32_t offset) final
 
void StoreRootRelative (int32_t offset, Register value) final
 
MemOperand ExternalReferenceAsOperand (ExternalReference reference, Register scratch)
 
MemOperand ExternalReferenceAsOperand (IsolateFieldId id)
 
void Call (Register target, Condition cond=al)
 
void Call (Address target, RelocInfo::Mode rmode, Condition cond=al, TargetAddressStorageMode mode=CAN_INLINE_TARGET_ADDRESS, bool check_constant_pool=true)
 
void Call (Handle< Code > code, RelocInfo::Mode rmode=RelocInfo::CODE_TARGET, Condition cond=al, TargetAddressStorageMode mode=CAN_INLINE_TARGET_ADDRESS, bool check_constant_pool=true)
 
void Call (Label *target)
 
MemOperand EntryFromBuiltinAsOperand (Builtin builtin)
 
void LoadEntryFromBuiltin (Builtin builtin, Register destination)
 
void LoadEntryFromBuiltinIndex (Register builtin_index, Register target)
 
void CallBuiltinByIndex (Register builtin_index, Register target)
 
void CallBuiltin (Builtin builtin, Condition cond=al)
 
void TailCallBuiltin (Builtin builtin, Condition cond=al)
 
void LoadCodeInstructionStart (Register destination, Register code_object, CodeEntrypointTag tag=kDefaultCodeEntrypointTag)
 
void CallCodeObject (Register code_object)
 
void JumpCodeObject (Register code_object, JumpMode jump_mode=JumpMode::kJump)
 
void CallJSFunction (Register function_object, uint16_t argument_count)
 
void JumpJSFunction (Register function_object, JumpMode jump_mode=JumpMode::kJump)
 
void StoreReturnAddressAndCall (Register target)
 
void EnforceStackAlignment ()
 
void BailoutIfDeoptimized ()
 
void CallForDeoptimization (Builtin target, int deopt_id, Label *exit, DeoptimizeKind kind, Label *ret, Label *jump_deoptimization_entry_label)
 
void Drop (int count, Condition cond=al)
 
void Drop (Register count, Condition cond=al)
 
void Ret (Condition cond=al)
 
void VFPCompareAndSetFlags (const SwVfpRegister src1, const SwVfpRegister src2, const Condition cond=al)
 
void VFPCompareAndSetFlags (const SwVfpRegister src1, const float src2, const Condition cond=al)
 
void VFPCompareAndSetFlags (const DwVfpRegister src1, const DwVfpRegister src2, const Condition cond=al)
 
void VFPCompareAndSetFlags (const DwVfpRegister src1, const double src2, const Condition cond=al)
 
void VFPCanonicalizeNaN (const DwVfpRegister dst, const DwVfpRegister src, const Condition cond=al)
 
void VFPCanonicalizeNaN (const DwVfpRegister value, const Condition cond=al)
 
void VmovHigh (Register dst, DwVfpRegister src)
 
void VmovHigh (DwVfpRegister dst, Register src)
 
void VmovLow (Register dst, DwVfpRegister src)
 
void VmovLow (DwVfpRegister dst, Register src)
 
void CheckPageFlag (Register object, int mask, Condition cc, Label *condition_met)
 
void CheckPageFlag (Register object, Register scratch, int mask, Condition cc, Label *condition_met)
 
void CheckFor32DRegs (Register scratch)
 
void MaybeSaveRegisters (RegList registers)
 
void MaybeRestoreRegisters (RegList registers)
 
void CallEphemeronKeyBarrier (Register object, Operand offset, SaveFPRegsMode fp_mode)
 
void CallRecordWriteStubSaveRegisters (Register object, Operand offset, SaveFPRegsMode fp_mode, StubCallMode mode=StubCallMode::kCallBuiltinPointer)
 
void CallRecordWriteStub (Register object, Register slot_address, SaveFPRegsMode fp_mode, StubCallMode mode=StubCallMode::kCallBuiltinPointer)
 
void MoveObjectAndSlot (Register dst_object, Register dst_slot, Register object, Operand offset)
 
void SaveFPRegs (Register location, Register scratch)
 
void RestoreFPRegs (Register location, Register scratch)
 
void SaveFPRegsToHeap (Register location, Register scratch)
 
void RestoreFPRegsFromHeap (Register location, Register scratch)
 
int RequiredStackSizeForCallerSaved (SaveFPRegsMode fp_mode, Register exclusion1=no_reg, Register exclusion2=no_reg, Register exclusion3=no_reg) const
 
int PushCallerSaved (SaveFPRegsMode fp_mode, Register exclusion1=no_reg, Register exclusion2=no_reg, Register exclusion3=no_reg)
 
int PopCallerSaved (SaveFPRegsMode fp_mode, Register exclusion1=no_reg, Register exclusion2=no_reg, Register exclusion3=no_reg)
 
void Jump (Register target, Condition cond=al)
 
void Jump (Address target, RelocInfo::Mode rmode, Condition cond=al)
 
void Jump (Handle< Code > code, RelocInfo::Mode rmode, Condition cond=al)
 
void Jump (const ExternalReference &reference)
 
void GetLabelAddress (Register dst, Label *target)
 
void FloatMax (SwVfpRegister result, SwVfpRegister left, SwVfpRegister right, Label *out_of_line)
 
void FloatMin (SwVfpRegister result, SwVfpRegister left, SwVfpRegister right, Label *out_of_line)
 
void FloatMax (DwVfpRegister result, DwVfpRegister left, DwVfpRegister right, Label *out_of_line)
 
void FloatMin (DwVfpRegister result, DwVfpRegister left, DwVfpRegister right, Label *out_of_line)
 
void FloatMaxOutOfLine (SwVfpRegister result, SwVfpRegister left, SwVfpRegister right)
 
void FloatMinOutOfLine (SwVfpRegister result, SwVfpRegister left, SwVfpRegister right)
 
void FloatMaxOutOfLine (DwVfpRegister result, DwVfpRegister left, DwVfpRegister right)
 
void FloatMinOutOfLine (DwVfpRegister result, DwVfpRegister left, DwVfpRegister right)
 
void ExtractLane (Register dst, QwNeonRegister src, NeonDataType dt, int lane)
 
void ExtractLane (Register dst, DwVfpRegister src, NeonDataType dt, int lane)
 
void ExtractLane (SwVfpRegister dst, QwNeonRegister src, int lane)
 
void ExtractLane (DwVfpRegister dst, QwNeonRegister src, int lane)
 
void ReplaceLane (QwNeonRegister dst, QwNeonRegister src, Register src_lane, NeonDataType dt, int lane)
 
void ReplaceLane (QwNeonRegister dst, QwNeonRegister src, SwVfpRegister src_lane, int lane)
 
void ReplaceLane (QwNeonRegister dst, QwNeonRegister src, DwVfpRegister src_lane, int lane)
 
void LoadLane (NeonSize sz, NeonListOperand dst_list, uint8_t lane, NeonMemOperand src)
 
void StoreLane (NeonSize sz, NeonListOperand src_list, uint8_t lane, NeonMemOperand dst)
 
void Move (Register dst, Tagged< Smi > smi)
 
void Move (Register dst, Handle< HeapObject > value)
 
void Move (Register dst, ExternalReference reference)
 
void LoadIsolateField (Register dst, IsolateFieldId id)
 
void Move (Register dst, Register src, Condition cond=al)
 
void Move (Register dst, const MemOperand &src)
 
void Move (Register dst, const Operand &src, SBit sbit=LeaveCC, Condition cond=al)
 
void MovePair (Register dst0, Register src0, Register dst1, Register src1)
 
void Move (SwVfpRegister dst, SwVfpRegister src, Condition cond=al)
 
void Move (DwVfpRegister dst, DwVfpRegister src, Condition cond=al)
 
void Move (QwNeonRegister dst, QwNeonRegister src)
 
void VmovExtended (Register dst, int src_code)
 
void VmovExtended (int dst_code, Register src)
 
void VmovExtended (int dst_code, int src_code)
 
void VmovExtended (int dst_code, const MemOperand &src)
 
void VmovExtended (const MemOperand &dst, int src_code)
 
void Swap (Register srcdst0, Register srcdst1)
 
void Swap (DwVfpRegister srcdst0, DwVfpRegister srcdst1)
 
void Swap (QwNeonRegister srcdst0, QwNeonRegister srcdst1)
 
void Bfc (Register dst, Register src, int lsb, int width, Condition cond=al)
 
void SmiUntag (Register reg, SBit s=LeaveCC)
 
void SmiUntag (Register dst, Register src, SBit s=LeaveCC)
 
void SmiToInt32 (Register smi)
 
void SmiToInt32 (Register dst, Register smi)
 
void LoadTaggedRoot (Register destination, RootIndex index)
 
void LoadRoot (Register destination, RootIndex index) final
 
void LoadRoot (Register destination, RootIndex index, Condition cond)
 
void JumpIfSmi (Register value, Label *smi_label)
 
void JumpIfEqual (Register x, int32_t y, Label *dest)
 
void JumpIfLessThan (Register x, int32_t y, Label *dest)
 
void LoadMap (Register destination, Register object)
 
void LoadFeedbackVector (Register dst, Register closure, Register scratch, Label *fbv_undef)
 
void PushAll (RegList registers)
 
void PopAll (RegList registers)
 
void PushAll (DoubleRegList registers, int stack_slot_size=kDoubleSize)
 
void PopAll (DoubleRegList registers, int stack_slot_size=kDoubleSize)
 
void Cmp (const Register &rn, int imm)
 
void CmpTagged (const Register &r1, const Register &r2)
 
Condition CheckSmi (Register src)
 
void Zero (const MemOperand &dest)
 
void Zero (const MemOperand &dest1, const MemOperand &dest2)
 
void DecompressTagged (const Register &destination, const MemOperand &field_operand)
 
void DecompressTagged (const Register &destination, const Register &source)
 
void AssertMap (Register object) NOOP_UNLESS_DEBUG_CODE
 
void LoadTaggedField (const Register &destination, const MemOperand &field_operand)
 
void LoadTaggedFieldWithoutDecompressing (const Register &destination, const MemOperand &field_operand)
 
void SmiUntagField (Register dst, const MemOperand &src)
 
void StoreTaggedField (const Register &value, const MemOperand &dst_field_operand)
 
void StoreTaggedField (const MemOperand &dst_field_operand, const Register &value)
 
void Switch (Register scratch, Register value, int case_value_base, Label **labels, int num_labels)
 
void JumpIfCodeIsMarkedForDeoptimization (Register code, Register scratch, Label *if_marked_for_deoptimization)
 
void JumpIfCodeIsTurbofanned (Register code, Register scratch, Label *if_turbofanned)
 
void TryLoadOptimizedOsrCode (Register scratch_and_result, CodeKind min_opt_level, Register feedback_vector, FeedbackSlot slot, Label *on_result, Label::Distance distance)
 
void AssertZeroExtended (Register int32_register)
 
void TryInlineTruncateDoubleToI (Register result, DwVfpRegister input, Label *done)
 
void TruncateDoubleToI (Isolate *isolate, Zone *zone, Register result, DwVfpRegister double_input, StubCallMode stub_mode)
 
bool use_eabi_hardfloat ()
 
void ComputeCodeStartAddress (Register dst)
 
void CodeEntry ()
 
void ExceptionHandler ()
 
void BindExceptionHandler (Label *label)
 
void I64x2BitMask (Register dst, QwNeonRegister src)
 
void I64x2Eq (QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2)
 
void I64x2Ne (QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2)
 
void I64x2GtS (QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2)
 
void I64x2GeS (QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2)
 
void I64x2AllTrue (Register dst, QwNeonRegister src)
 
void I64x2Abs (QwNeonRegister dst, QwNeonRegister src)
 
void F64x2ConvertLowI32x4S (QwNeonRegister dst, QwNeonRegister src)
 
void F64x2ConvertLowI32x4U (QwNeonRegister dst, QwNeonRegister src)
 
void F64x2PromoteLowF32x4 (QwNeonRegister dst, QwNeonRegister src)
 
void Mls (Register dst, Register src1, Register src2, Register srcA, Condition cond=al)
 
void And (Register dst, Register src1, const Operand &src2, Condition cond=al)
 
void Ubfx (Register dst, Register src, int lsb, int width, Condition cond=al)
 
void Sbfx (Register dst, Register src, int lsb, int width, Condition cond=al)
 
void RecordWriteField (Register object, int offset, Register value, LinkRegisterStatus lr_status, SaveFPRegsMode save_fp, SmiCheck smi_check=SmiCheck::kInline)
 
void RecordWrite (Register object, Operand offset, Register value, LinkRegisterStatus lr_status, SaveFPRegsMode save_fp, SmiCheck smi_check=SmiCheck::kInline)
 
void EnterExitFrame (Register scratch, int stack_space, StackFrame::Type frame_type)
 
void LeaveExitFrame (Register scratch)
 
void LoadGlobalProxy (Register dst)
 
void LoadNativeContextSlot (Register dst, int index)
 
void InvokeFunctionCode (Register function, Register new_target, Register expected_parameter_count, Register actual_parameter_count, InvokeType type)
 
void CallDebugOnFunctionCall (Register fun, Register new_target, Register expected_parameter_count, Register actual_parameter_count)
 
void InvokeFunctionWithNewTarget (Register function, Register new_target, Register actual_parameter_count, InvokeType type)
 
void InvokeFunction (Register function, Register expected_parameter_count, Register actual_parameter_count, InvokeType type)
 
void PushStackHandler ()
 
void PopStackHandler ()
 
void CompareObjectType (Register heap_object, Register map, Register type_reg, InstanceType type)
 
void CompareObjectTypeRange (Register heap_object, Register map, Register type_reg, Register scratch, InstanceType lower_limit, InstanceType higher_limit)
 
void CompareInstanceType (Register map, Register type_reg, InstanceType type)
 
void CompareInstanceTypeRange (Register map, Register type_reg, Register scratch, InstanceType lower_limit, InstanceType higher_limit)
 
void CompareRoot (Register obj, RootIndex index)
 
void CompareTaggedRoot (Register with, RootIndex index)
 
void PushRoot (RootIndex index)
 
void JumpIfRoot (Register with, RootIndex index, Label *if_equal)
 
void JumpIfNotRoot (Register with, RootIndex index, Label *if_not_equal)
 
void CompareRange (Register value, Register scratch, unsigned lower_limit, unsigned higher_limit)
 
void JumpIfIsInRange (Register value, Register scratch, unsigned lower_limit, unsigned higher_limit, Label *on_in_range)
 
MemOperand ReceiverOperand ()
 
void AssertFeedbackCell (Register object, Register scratch) NOOP_UNLESS_DEBUG_CODE
 
void AssertFeedbackVector (Register object, Register scratch) NOOP_UNLESS_DEBUG_CODE
 
void GenerateTailCallToReturnedCode (Runtime::FunctionId function_id)
 
void ReplaceClosureCodeWithOptimizedCode (Register optimized_code, Register closure)
 
Condition LoadFeedbackVectorFlagsAndCheckIfNeedsProcessing (Register flags, Register feedback_vector, CodeKind current_code_kind)
 
void LoadFeedbackVectorFlagsAndJumpIfNeedsProcessing (Register flags, Register feedback_vector, CodeKind current_code_kind, Label *flags_need_processing)
 
void OptimizeCodeOrTailCallOptimizedCodeSlot (Register flags, Register feedback_vector)
 
void CallRuntime (const Runtime::Function *f, int num_arguments)
 
void CallRuntime (Runtime::FunctionId fid)
 
void CallRuntime (Runtime::FunctionId fid, int num_arguments)
 
void TailCallRuntime (Runtime::FunctionId fid)
 
void JumpToExternalReference (const ExternalReference &builtin, bool builtin_exit_frame=false)
 
void LoadWeakValue (Register out, Register in, Label *target_if_cleared)
 
void IncrementCounter (StatsCounter *counter, int value, Register scratch1, Register scratch2)
 
void EmitIncrementCounter (StatsCounter *counter, int value, Register scratch1, Register scratch2)
 
void DecrementCounter (StatsCounter *counter, int value, Register scratch1, Register scratch2)
 
void EmitDecrementCounter (StatsCounter *counter, int value, Register scratch1, Register scratch2)
 
void LoadStackLimit (Register destination, StackLimitKind kind)
 
void StackOverflowCheck (Register num_args, Register scratch, Label *stack_overflow)
 
void SmiTag (Register reg, SBit s=LeaveCC)
 
void SmiTag (Register dst, Register src, SBit s=LeaveCC)
 
void SmiTst (Register value)
 
void JumpIfNotSmi (Register value, Label *not_smi_label)
 
void AssertNotSmi (Register object, AbortReason reason=AbortReason::kOperandIsASmi) NOOP_UNLESS_DEBUG_CODE
 
void AssertSmi (Register object, AbortReason reason=AbortReason::kOperandIsNotASmi) NOOP_UNLESS_DEBUG_CODE
 
void AssertConstructor (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertFunction (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertCallableFunction (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertBoundFunction (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertGeneratorObject (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertUndefinedOrAllocationSite (Register object, Register scratch) NOOP_UNLESS_DEBUG_CODE
 
void AssertJSAny (Register object, Register map_tmp, Register tmp, AbortReason abort_reason) NOOP_UNLESS_DEBUG_CODE
 
template<typename Field >
void DecodeField (Register dst, Register src)
 
template<typename Field >
void DecodeField (Register reg)
 
void TestCodeIsMarkedForDeoptimization (Register code, Register scratch)
 
Operand ClearedValue () const
 
bool CanUseNearCallOrJump (RelocInfo::Mode rmode)
 
void EnterFrame (StackFrame::Type type)
 
void EnterFrame (StackFrame::Type type, bool load_constant_pool_pointer_reg)
 
void LeaveFrame (StackFrame::Type type)
 
void InitializeRootRegister ()
 
void Mov (const Register &rd, const Operand &operand, DiscardMoveMode discard_mode=kDontDiscardForSameWReg)
 
void Mov (const Register &rd, uint64_t imm)
 
void Mov (const Register &rd, ExternalReference reference)
 
void LoadIsolateField (const Register &rd, IsolateFieldId id)
 
void Mov (const VRegister &vd, int vd_index, const VRegister &vn, int vn_index)
 
void Mov (const Register &rd, Tagged< Smi > smi)
 
void Mov (const VRegister &vd, const VRegister &vn, int index)
 
void Mov (const VRegister &vd, int vd_index, const Register &rn)
 
void Mov (const Register &rd, const VRegister &vn, int vn_index)
 
void Move (Register dst, Tagged< Smi > src)
 
void Move (Register dst, MemOperand src)
 
void Move (Register dst, Register src)
 
void MovePair (Register dst0, Register src0, Register dst1, Register src1)
 
void Swap (Register lhs, Register rhs)
 
void Swap (VRegister lhs, VRegister rhs)
 
void Bcax (const VRegister &vd, const VRegister &vn, const VRegister &vm, const VRegister &va)
 
void Eor3 (const VRegister &vd, const VRegister &vn, const VRegister &vm, const VRegister &va)
 
void Bic (const VRegister &vd, const int imm8, const int left_shift=0)
 
void jmp (Label *L)
 
void B (Label *label, BranchType type, Register reg=NoReg, int bit=-1)
 
void B (Label *label)
 
void B (Condition cond, Label *label)
 
void Bc (Condition cond, Label *label)
 
void B (Label *label, Condition cond)
 
void Tbnz (const Register &rt, unsigned bit_pos, Label *label)
 
void Tbz (const Register &rt, unsigned bit_pos, Label *label)
 
void Cbnz (const Register &rt, Label *label)
 
void Cbz (const Register &rt, Label *label)
 
void Pacibsp ()
 
void Autibsp ()
 
void Pacib1716 ()
 
void Autib1716 ()
 
void Dmb (BarrierDomain domain, BarrierType type)
 
void Dsb (BarrierDomain domain, BarrierType type)
 
void Isb ()
 
void Csdb ()
 
void SmiUntag (Register dst, Register src)
 
void SmiUntag (Register dst, const MemOperand &src)
 
void SmiUntag (Register smi)
 
void SmiTag (Register dst, Register src)
 
void SmiTag (Register smi)
 
void SmiToInt32 (Register smi)
 
void SmiToInt32 (Register dst, Register smi)
 
void Assert (Condition cond, AbortReason reason) NOOP_UNLESS_DEBUG_CODE
 
void AssertUnreachable (AbortReason reason) NOOP_UNLESS_DEBUG_CODE
 
void AssertSmi (Register object, AbortReason reason=AbortReason::kOperandIsNotASmi) NOOP_UNLESS_DEBUG_CODE
 
void AssertNotSmi (Register object, AbortReason reason=AbortReason::kOperandIsASmi) NOOP_UNLESS_DEBUG_CODE
 
void AssertZeroExtended (Register int32_register) NOOP_UNLESS_DEBUG_CODE
 
void AssertJSAny (Register object, Register map_tmp, Register tmp, AbortReason abort_reason) NOOP_UNLESS_DEBUG_CODE
 
void Check (Condition cond, AbortReason reason)
 
void SbxCheck (Condition cc, AbortReason reason)
 
Condition CheckSmi (Register src)
 
void Debug (const char *message, uint32_t code, Instr params=BREAK)
 
void Trap ()
 
void DebugBreak ()
 
void Abort (AbortReason reason)
 
void Printf (const char *format, CPURegister arg0=NoCPUReg, CPURegister arg1=NoCPUReg, CPURegister arg2=NoCPUReg, CPURegister arg3=NoCPUReg)
 
void PrintfNoPreserve (const char *format, const CPURegister &arg0=NoCPUReg, const CPURegister &arg1=NoCPUReg, const CPURegister &arg2=NoCPUReg, const CPURegister &arg3=NoCPUReg)
 
void Asr (const Register &rd, const Register &rn, unsigned shift)
 
void Asr (const Register &rd, const Register &rn, const Register &rm)
 
bool TryOneInstrMoveImmediate (const Register &dst, int64_t imm)
 
void Bind (Label *label, BranchTargetIdentifier id=BranchTargetIdentifier::kNone)
 
void CodeEntry ()
 
void ExceptionHandler ()
 
void BindExceptionHandler (Label *label)
 
void JumpTarget ()
 
void BindJumpTarget (Label *label)
 
void CallTarget ()
 
void BindCallTarget (Label *label)
 
void JumpOrCallTarget ()
 
void BindJumpOrCallTarget (Label *label)
 
CPURegListTmpList ()
 
CPURegListFPTmpList ()
 
void Mvn (const Register &rd, uint64_t imm)
 
void Mvn (const Register &rd, const Operand &operand)
 
void LogicalMacro (const Register &rd, const Register &rn, const Operand &operand, LogicalOp op)
 
void AddSubMacro (const Register &rd, const Register &rn, const Operand &operand, FlagsUpdate S, AddSubOp op)
 
void Orr (const Register &rd, const Register &rn, const Operand &operand)
 
void Orr (const VRegister &vd, const int imm8, const int left_shift=0)
 
void Orn (const Register &rd, const Register &rn, const Operand &operand)
 
void Eor (const Register &rd, const Register &rn, const Operand &operand)
 
void Eon (const Register &rd, const Register &rn, const Operand &operand)
 
void And (const Register &rd, const Register &rn, const Operand &operand)
 
void Ands (const Register &rd, const Register &rn, const Operand &operand)
 
void Tst (const Register &rn, const Operand &operand)
 
void Bic (const Register &rd, const Register &rn, const Operand &operand)
 
void Blr (const Register &xn)
 
void Cmp (const Register &rn, const Operand &operand)
 
void CmpTagged (const Register &rn, const Operand &operand)
 
void Subs (const Register &rd, const Register &rn, const Operand &operand)
 
void Csel (const Register &rd, const Register &rn, const Operand &operand, Condition cond)
 
void Fcsel (const VRegister &fd, const VRegister &fn, const VRegister &fm, Condition cond)
 
void CompareRange (Register value, Register scratch, unsigned lower_limit, unsigned higher_limit)
 
void JumpIfIsInRange (Register value, Register scratch, unsigned lower_limit, unsigned higher_limit, Label *on_in_range)
 
void AssertSpAligned () NOOP_UNLESS_DEBUG_CODE
 
void CopySlots (int dst, Register src, Register slot_count)
 
void CopySlots (Register dst, Register src, Register slot_count)
 
void CopyDoubleWords (Register dst, Register src, Register count, CopyDoubleWordsMode mode=kDstLessThanSrc)
 
void SlotAddress (Register dst, int slot_offset)
 
void SlotAddress (Register dst, Register slot_offset)
 
void Ldr (const CPURegister &rt, const Operand &imm)
 
void Claim (int64_t count, uint64_t unit_size=kXRegSize)
 
void Claim (const Register &count, uint64_t unit_size=kXRegSize, bool assume_sp_aligned=true)
 
void Drop (int64_t count, uint64_t unit_size=kXRegSize)
 
void Drop (const Register &count, uint64_t unit_size=kXRegSize)
 
void DropArguments (const Register &count, int extra_slots=0)
 
void DropArguments (int64_t count)
 
void DropSlots (int64_t count)
 
void PushArgument (const Register &arg)
 
void Add (const Register &rd, const Register &rn, const Operand &operand)
 
void Adds (const Register &rd, const Register &rn, const Operand &operand)
 
void Sub (const Register &rd, const Register &rn, const Operand &operand)
 
void AssertPositiveOrZero (Register value) NOOP_UNLESS_DEBUG_CODE
 
void Switch (Register scratch, Register value, int case_value_base, Label **labels, int num_labels)
 
template<StoreLRMode lr_mode = kDontStoreLR>
void Push (const CPURegister &src0, const CPURegister &src1=NoReg, const CPURegister &src2=NoReg, const CPURegister &src3=NoReg)
 
void Push (const CPURegister &src0, const CPURegister &src1, const CPURegister &src2, const CPURegister &src3, const CPURegister &src4, const CPURegister &src5=NoReg, const CPURegister &src6=NoReg, const CPURegister &src7=NoReg)
 
template<LoadLRMode lr_mode = kDontLoadLR>
void Pop (const CPURegister &dst0, const CPURegister &dst1=NoReg, const CPURegister &dst2=NoReg, const CPURegister &dst3=NoReg)
 
void Pop (const CPURegister &dst0, const CPURegister &dst1, const CPURegister &dst2, const CPURegister &dst3, const CPURegister &dst4, const CPURegister &dst5=NoReg, const CPURegister &dst6=NoReg, const CPURegister &dst7=NoReg)
 
template<StoreLRMode lr_mode = kDontStoreLR>
void Push (const Register &src0, const VRegister &src1)
 
void MaybeSaveRegisters (RegList registers)
 
void MaybeRestoreRegisters (RegList registers)
 
void CallEphemeronKeyBarrier (Register object, Operand offset, SaveFPRegsMode fp_mode)
 
void CallIndirectPointerBarrier (Register object, Operand offset, SaveFPRegsMode fp_mode, IndirectPointerTag tag)
 
void CallRecordWriteStubSaveRegisters (Register object, Operand offset, SaveFPRegsMode fp_mode, StubCallMode mode=StubCallMode::kCallBuiltinPointer)
 
void CallRecordWriteStub (Register object, Register slot_address, SaveFPRegsMode fp_mode, StubCallMode mode=StubCallMode::kCallBuiltinPointer)
 
void MoveObjectAndSlot (Register dst_object, Register dst_slot, Register object, Operand offset)
 
void PushCPURegList (CPURegList registers)
 
void PopCPURegList (CPURegList registers)
 
int RequiredStackSizeForCallerSaved (SaveFPRegsMode fp_mode, Register exclusion) const
 
int PushCallerSaved (SaveFPRegsMode fp_mode, Register exclusion=no_reg)
 
int PopCallerSaved (SaveFPRegsMode fp_mode, Register exclusion=no_reg)
 
Operand MoveImmediateForShiftedOp (const Register &dst, int64_t imm, PreShiftImmMode mode)
 
void CheckPageFlag (const Register &object, int mask, Condition cc, Label *condition_met)
 
void CheckPageFlag (const Register &object, Register scratch, int mask, Condition cc, Label *condition_met)
 
void CompareAndBranch (const Register &lhs, const Operand &rhs, Condition cond, Label *label)
 
void CompareTaggedAndBranch (const Register &lhs, const Operand &rhs, Condition cond, Label *label)
 
void TestAndBranchIfAnySet (const Register &reg, const uint64_t bit_pattern, Label *label)
 
void TestAndBranchIfAllClear (const Register &reg, const uint64_t bit_pattern, Label *label)
 
void Brk (int code)
 
void JumpIfSmi (Register value, Label *smi_label, Label *not_smi_label=nullptr)
 
void JumpIf (Condition cond, Register x, int32_t y, Label *dest)
 
void JumpIfEqual (Register x, int32_t y, Label *dest)
 
void JumpIfLessThan (Register x, int32_t y, Label *dest)
 
void JumpIfUnsignedLessThan (Register x, int32_t y, Label *dest)
 
void JumpIfMarking (Label *is_marking, Label::Distance condition_met_distance=Label::kFar)
 
void JumpIfNotMarking (Label *not_marking, Label::Distance condition_met_distance=Label::kFar)
 
void LoadMap (Register dst, Register object)
 
void LoadCompressedMap (Register dst, Register object)
 
void LoadFeedbackVector (Register dst, Register closure, Register scratch, Label *fbv_undef)
 
void Fmov (VRegister fd, VRegister fn)
 
void Fmov (VRegister fd, Register rn)
 
void Fmov (VRegister fd, double imm)
 
void Fmov (VRegister fd, float imm)
 
template<typename T >
void Fmov (VRegister fd, T imm)
 
void Fmov (Register rd, VRegister fn)
 
void Movi (const VRegister &vd, uint64_t imm, Shift shift=LSL, int shift_amount=0)
 
void Movi (const VRegister &vd, uint64_t hi, uint64_t lo)
 
void LoadFromConstantsTable (Register destination, int constant_index) final
 
void LoadRootRegisterOffset (Register destination, intptr_t offset) final
 
void LoadRootRelative (Register destination, int32_t offset) final
 
void StoreRootRelative (int32_t offset, Register value) final
 
MemOperand ExternalReferenceAsOperand (ExternalReference reference, Register scratch)
 
MemOperand ExternalReferenceAsOperand (IsolateFieldId id)
 
void Jump (Register target, Condition cond=al)
 
void Jump (Address target, RelocInfo::Mode rmode, Condition cond=al)
 
void Jump (Handle< Code > code, RelocInfo::Mode rmode, Condition cond=al)
 
void Jump (const ExternalReference &reference)
 
void Call (Register target)
 
void Call (Address target, RelocInfo::Mode rmode)
 
void Call (Handle< Code > code, RelocInfo::Mode rmode=RelocInfo::CODE_TARGET)
 
void Call (ExternalReference target)
 
void IndirectCall (Address target, RelocInfo::Mode rmode)
 
void LoadEntryFromBuiltinIndex (Register builtin, Register target)
 
void LoadEntryFromBuiltin (Builtin builtin, Register destination)
 
MemOperand EntryFromBuiltinAsOperand (Builtin builtin)
 
void CallBuiltinByIndex (Register builtin, Register target)
 
void CallBuiltin (Builtin builtin)
 
void TailCallBuiltin (Builtin builtin, Condition cond=al)
 
void LoadCodeInstructionStart (Register destination, Register code_object, CodeEntrypointTag tag)
 
void CallCodeObject (Register code_object, CodeEntrypointTag tag)
 
void JumpCodeObject (Register code_object, CodeEntrypointTag tag, JumpMode jump_mode=JumpMode::kJump)
 
void CallJSFunction (Register function_object, uint16_t argument_count)
 
void JumpJSFunction (Register function_object, JumpMode jump_mode=JumpMode::kJump)
 
void StoreReturnAddressAndCall (Register target)
 
void BailoutIfDeoptimized ()
 
void CallForDeoptimization (Builtin target, int deopt_id, Label *exit, DeoptimizeKind kind, Label *ret, Label *jump_deoptimization_entry_label)
 
int CallCFunction (ExternalReference function, int num_reg_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, Label *return_location=nullptr)
 
int CallCFunction (ExternalReference function, int num_reg_arguments, int num_double_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, Label *return_location=nullptr)
 
int CallCFunction (Register function, int num_reg_arguments, int num_double_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, Label *return_location=nullptr)
 
void TruncateDoubleToI (Isolate *isolate, Zone *zone, Register result, DoubleRegister double_input, StubCallMode stub_mode, LinkRegisterStatus lr_status)
 
void Mul (const Register &rd, const Register &rn, const Register &rm)
 
void Fcvtzs (const Register &rd, const VRegister &fn)
 
void Fcvtzs (const VRegister &vd, const VRegister &vn, int fbits=0)
 
void Fjcvtzs (const Register &rd, const VRegister &vn)
 
void Fcvtzu (const Register &rd, const VRegister &fn)
 
void Fcvtzu (const VRegister &vd, const VRegister &vn, int fbits=0)
 
void Madd (const Register &rd, const Register &rn, const Register &rm, const Register &ra)
 
void Mneg (const Register &rd, const Register &rn, const Register &rm)
 
void Sdiv (const Register &rd, const Register &rn, const Register &rm)
 
void Udiv (const Register &rd, const Register &rn, const Register &rm)
 
void Msub (const Register &rd, const Register &rn, const Register &rm, const Register &ra)
 
void Lsl (const Register &rd, const Register &rn, unsigned shift)
 
void Lsl (const Register &rd, const Register &rn, const Register &rm)
 
void Umull (const Register &rd, const Register &rn, const Register &rm)
 
void Umulh (const Register &rd, const Register &rn, const Register &rm)
 
void Smull (const Register &rd, const Register &rn, const Register &rm)
 
void Smulh (const Register &rd, const Register &rn, const Register &rm)
 
void Sxtb (const Register &rd, const Register &rn)
 
void Sxth (const Register &rd, const Register &rn)
 
void Sxtw (const Register &rd, const Register &rn)
 
void Ubfiz (const Register &rd, const Register &rn, unsigned lsb, unsigned width)
 
void Sbfiz (const Register &rd, const Register &rn, unsigned lsb, unsigned width)
 
void Ubfx (const Register &rd, const Register &rn, unsigned lsb, unsigned width)
 
void Lsr (const Register &rd, const Register &rn, unsigned shift)
 
void Lsr (const Register &rd, const Register &rn, const Register &rm)
 
void Ror (const Register &rd, const Register &rs, unsigned shift)
 
void Ror (const Register &rd, const Register &rn, const Register &rm)
 
void Cmn (const Register &rn, const Operand &operand)
 
void Fadd (const VRegister &fd, const VRegister &fn, const VRegister &fm)
 
void Fcmp (const VRegister &fn, const VRegister &fm)
 
void Fcmp (const VRegister &fn, double value)
 
void Fabs (const VRegister &fd, const VRegister &fn)
 
void Fmul (const VRegister &fd, const VRegister &fn, const VRegister &fm)
 
void Fsub (const VRegister &fd, const VRegister &fn, const VRegister &fm)
 
void Fdiv (const VRegister &fd, const VRegister &fn, const VRegister &fm)
 
void Fmax (const VRegister &fd, const VRegister &fn, const VRegister &fm)
 
void Fmin (const VRegister &fd, const VRegister &fn, const VRegister &fm)
 
void Rbit (const Register &rd, const Register &rn)
 
void Rev (const Register &rd, const Register &rn)
 
void Adr (const Register &rd, Label *label, AdrHint=kAdrNear)
 
void Adc (const Register &rd, const Register &rn, const Operand &operand)
 
void Ccmp (const Register &rn, const Operand &operand, StatusFlags nzcv, Condition cond)
 
void CcmpTagged (const Register &rn, const Operand &operand, StatusFlags nzcv, Condition cond)
 
void Ccmn (const Register &rn, const Operand &operand, StatusFlags nzcv, Condition cond)
 
void Clz (const Register &rd, const Register &rn)
 
void Abs (const Register &rd, const Register &rn)
 
void Cnt (const Register &rd, const Register &rn)
 
void Ctz (const Register &rd, const Register &rn)
 
template<StoreLRMode lr_mode = kDontStoreLR>
void Poke (const CPURegister &src, const Operand &offset)
 
template<LoadLRMode lr_mode = kDontLoadLR>
void Peek (const CPURegister &dst, const Operand &offset)
 
void PokePair (const CPURegister &src1, const CPURegister &src2, int offset)
 
void Sbfx (const Register &rd, const Register &rn, unsigned lsb, unsigned width)
 
void Bfi (const Register &rd, const Register &rn, unsigned lsb, unsigned width)
 
void Scvtf (const VRegister &fd, const Register &rn, unsigned fbits=0)
 
void Scvtf (const VRegister &vd, const VRegister &vn, int fbits=0)
 
void Ucvtf (const VRegister &fd, const Register &rn, unsigned fbits=0)
 
void Ucvtf (const VRegister &vd, const VRegister &vn, int fbits=0)
 
void AssertFPCRState (Register fpcr=NoReg) NOOP_UNLESS_DEBUG_CODE
 
void CanonicalizeNaN (const VRegister &dst, const VRegister &src)
 
void CanonicalizeNaN (const VRegister &reg)
 
void CmovX (const Register &rd, const Register &rn, Condition cond)
 
void Cset (const Register &rd, Condition cond)
 
void Csetm (const Register &rd, Condition cond)
 
void Fccmp (const VRegister &fn, const VRegister &fm, StatusFlags nzcv, Condition cond)
 
void Fccmp (const VRegister &fn, const double value, StatusFlags nzcv, Condition cond)
 
void Csinc (const Register &rd, const Register &rn, const Register &rm, Condition cond)
 
void Fcvt (const VRegister &fd, const VRegister &fn)
 
int ActivationFrameAlignment ()
 
void Ins (const VRegister &vd, int vd_index, const VRegister &vn, int vn_index)
 
void Ins (const VRegister &vd, int vd_index, const Register &rn)
 
void Bl (Label *label)
 
void Br (const Register &xn)
 
void Uxtb (const Register &rd, const Register &rn)
 
void Uxth (const Register &rd, const Register &rn)
 
void Uxtw (const Register &rd, const Register &rn)
 
void Dup (const VRegister &vd, const VRegister &vn, int index)
 
void Dup (const VRegister &vd, const Register &rn)
 
void St1 (const VRegister &vt, const MemOperand &dst)
 
void St1 (const VRegister &vt, const VRegister &vt2, const MemOperand &dst)
 
void St1 (const VRegister &vt, const VRegister &vt2, const VRegister &vt3, const MemOperand &dst)
 
void St1 (const VRegister &vt, const VRegister &vt2, const VRegister &vt3, const VRegister &vt4, const MemOperand &dst)
 
void St1 (const VRegister &vt, int lane, const MemOperand &dst)
 
void Umov (const Register &rd, const VRegister &vn, int vn_index)
 
void Tbl (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void Tbl (const VRegister &vd, const VRegister &vn, const VRegister &vn2, const VRegister &vm)
 
void Tbl (const VRegister &vd, const VRegister &vn, const VRegister &vn2, const VRegister &vn3, const VRegister &vm)
 
void Tbl (const VRegister &vd, const VRegister &vn, const VRegister &vn2, const VRegister &vn3, const VRegister &vn4, const VRegister &vm)
 
void Ext (const VRegister &vd, const VRegister &vn, const VRegister &vm, int index)
 
void Smov (const Register &rd, const VRegister &vn, int vn_index)
 
 ATOMIC_MEMORY_SIMPLE_MACRO_LIST (ATOMIC_MEMORY_LOAD_MACRO_MODES, DECLARE_LOAD_FUNCTION, Ld, ld) ATOMIC_MEMORY_SIMPLE_MACRO_LIST(ATOMIC_MEMORY_STORE_MACRO_MODES
 
void LoadRoot (Register destination, RootIndex index) final
 
void LoadTaggedRoot (Register destination, RootIndex index)
 
void PushRoot (RootIndex index)
 
void Ret (const Register &xn=lr)
 
void TryConvertDoubleToInt64 (Register result, DoubleRegister input, Label *done)
 
void Mrs (const Register &rt, SystemRegister sysreg)
 
void Msr (SystemRegister sysreg, const Register &rt)
 
void Prologue ()
 
void Cmgt (const VRegister &vd, const VRegister &vn, int imm)
 
void Cmge (const VRegister &vd, const VRegister &vn, int imm)
 
void Cmeq (const VRegister &vd, const VRegister &vn, int imm)
 
void Cmlt (const VRegister &vd, const VRegister &vn, int imm)
 
void Cmle (const VRegister &vd, const VRegister &vn, int imm)
 
void Neg (const Register &rd, const Operand &operand)
 
void Negs (const Register &rd, const Operand &operand)
 
void AbsWithOverflow (const Register &rd, const Register &rm, Label *is_not_representable=nullptr, Label *is_representable=nullptr)
 
void Cls (const Register &rd, const Register &rn)
 
void Cneg (const Register &rd, const Register &rn, Condition cond)
 
void Rev16 (const Register &rd, const Register &rn)
 
void Rev32 (const Register &rd, const Register &rn)
 
void Fcvtns (const Register &rd, const VRegister &fn)
 
void Fcvtnu (const Register &rd, const VRegister &fn)
 
void Fcvtms (const Register &rd, const VRegister &fn)
 
void Fcvtmu (const Register &rd, const VRegister &fn)
 
void Fcvtas (const Register &rd, const VRegister &fn)
 
void Fcvtau (const Register &rd, const VRegister &fn)
 
void ComputeCodeStartAddress (const Register &rd)
 
void LoadTaggedField (const Register &destination, const MemOperand &field_operand)
 
void LoadTaggedFieldWithoutDecompressing (const Register &destination, const MemOperand &field_operand)
 
void LoadTaggedSignedField (const Register &destination, const MemOperand &field_operand)
 
void SmiUntagField (Register dst, const MemOperand &src)
 
void StoreTaggedField (const Register &value, const MemOperand &dst_field_operand)
 
void StoreTwoTaggedFields (const Register &value, const MemOperand &dst_field_operand)
 
void StoreTaggedField (const MemOperand &dst_field_operand, const Register &value)
 
void AtomicStoreTaggedField (const Register &value, const Register &dst_base, const Register &dst_index, const Register &temp)
 
void DecompressTaggedSigned (const Register &destination, const MemOperand &field_operand)
 
void DecompressTagged (const Register &destination, const MemOperand &field_operand)
 
void DecompressTagged (const Register &destination, const Register &source)
 
void DecompressTagged (const Register &destination, Tagged_t immediate)
 
void DecompressProtected (const Register &destination, const MemOperand &field_operand)
 
void AtomicDecompressTaggedSigned (const Register &destination, const Register &base, const Register &index, const Register &temp)
 
int AtomicDecompressTagged (const Register &destination, const Register &base, const Register &index, const Register &temp)
 
void RestoreFPAndLR ()
 
void PopcntHelper (Register dst, Register src)
 
void I8x16BitMask (Register dst, VRegister src, VRegister temp=NoVReg)
 
void I16x8BitMask (Register dst, VRegister src)
 
void I32x4BitMask (Register dst, VRegister src)
 
void I64x2BitMask (Register dst, VRegister src)
 
void I64x2AllTrue (Register dst, VRegister src)
 
void DecodeSandboxedPointer (Register value)
 
void LoadSandboxedPointerField (Register destination, MemOperand field_operand)
 
void StoreSandboxedPointerField (Register value, MemOperand dst_field_operand)
 
void LoadExternalPointerField (Register destination, MemOperand field_operand, ExternalPointerTagRange tag_range, Register isolate_root=Register::no_reg())
 
void LoadTrustedPointerField (Register destination, MemOperand field_operand, IndirectPointerTag tag)
 
void StoreTrustedPointerField (Register value, MemOperand dst_field_operand)
 
void LoadCodePointerField (Register destination, MemOperand field_operand)
 
void StoreCodePointerField (Register value, MemOperand dst_field_operand)
 
void LoadIndirectPointerField (Register destination, MemOperand field_operand, IndirectPointerTag tag)
 
void StoreIndirectPointerField (Register value, MemOperand dst_field_operand)
 
void LoadProtectedPointerField (Register destination, MemOperand field_operand)
 
void Bics (const Register &rd, const Register &rn, const Operand &operand)
 
void Adcs (const Register &rd, const Register &rn, const Operand &operand)
 
void Sbc (const Register &rd, const Register &rn, const Operand &operand)
 
void Sbcs (const Register &rd, const Register &rn, const Operand &operand)
 
void Ngc (const Register &rd, const Operand &operand)
 
void Ngcs (const Register &rd, const Operand &operand)
 
void Bfxil (const Register &rd, const Register &rn, unsigned lsb, unsigned width)
 
void Cinc (const Register &rd, const Register &rn, Condition cond)
 
void Cinv (const Register &rd, const Register &rn, Condition cond)
 
void CzeroX (const Register &rd, Condition cond)
 
void Csinv (const Register &rd, const Register &rn, const Register &rm, Condition cond)
 
void Csneg (const Register &rd, const Register &rn, const Register &rm, Condition cond)
 
void Extr (const Register &rd, const Register &rn, const Register &rm, unsigned lsb)
 
void Fcvtl2 (const VRegister &vd, const VRegister &vn)
 
void Fcvtn2 (const VRegister &vd, const VRegister &vn)
 
void Fcvtxn (const VRegister &vd, const VRegister &vn)
 
void Fcvtxn2 (const VRegister &vd, const VRegister &vn)
 
void Fmadd (const VRegister &fd, const VRegister &fn, const VRegister &fm, const VRegister &fa)
 
void Fmaxnm (const VRegister &fd, const VRegister &fn, const VRegister &fm)
 
void Fminnm (const VRegister &fd, const VRegister &fn, const VRegister &fm)
 
void Fmsub (const VRegister &fd, const VRegister &fn, const VRegister &fm, const VRegister &fa)
 
void Fnmadd (const VRegister &fd, const VRegister &fn, const VRegister &fm, const VRegister &fa)
 
void Fnmsub (const VRegister &fd, const VRegister &fn, const VRegister &fm, const VRegister &fa)
 
void Hint (SystemHint code)
 
void Hlt (int code)
 
void Ldnp (const CPURegister &rt, const CPURegister &rt2, const MemOperand &src)
 
void Movk (const Register &rd, uint64_t imm, int shift=-1)
 
void Nop ()
 
void Mvni (const VRegister &vd, const int imm8, Shift shift=LSL, const int shift_amount=0)
 
void Smaddl (const Register &rd, const Register &rn, const Register &rm, const Register &ra)
 
void Smsubl (const Register &rd, const Register &rn, const Register &rm, const Register &ra)
 
void Stnp (const CPURegister &rt, const CPURegister &rt2, const MemOperand &dst)
 
void Umaddl (const Register &rd, const Register &rn, const Register &rm, const Register &ra)
 
void Umsubl (const Register &rd, const Register &rn, const Register &rm, const Register &ra)
 
void Ld1 (const VRegister &vt, const MemOperand &src)
 
void Ld1 (const VRegister &vt, const VRegister &vt2, const MemOperand &src)
 
void Ld1 (const VRegister &vt, const VRegister &vt2, const VRegister &vt3, const MemOperand &src)
 
void Ld1 (const VRegister &vt, const VRegister &vt2, const VRegister &vt3, const VRegister &vt4, const MemOperand &src)
 
void Ld1 (const VRegister &vt, int lane, const MemOperand &src)
 
void Ld1r (const VRegister &vt, const MemOperand &src)
 
void Ld2 (const VRegister &vt, const VRegister &vt2, const MemOperand &src)
 
void Ld2 (const VRegister &vt, const VRegister &vt2, int lane, const MemOperand &src)
 
void Ld2r (const VRegister &vt, const VRegister &vt2, const MemOperand &src)
 
void Ld3 (const VRegister &vt, const VRegister &vt2, const VRegister &vt3, const MemOperand &src)
 
void Ld3 (const VRegister &vt, const VRegister &vt2, const VRegister &vt3, int lane, const MemOperand &src)
 
void Ld3r (const VRegister &vt, const VRegister &vt2, const VRegister &vt3, const MemOperand &src)
 
void Ld4 (const VRegister &vt, const VRegister &vt2, const VRegister &vt3, const VRegister &vt4, const MemOperand &src)
 
void Ld4 (const VRegister &vt, const VRegister &vt2, const VRegister &vt3, const VRegister &vt4, int lane, const MemOperand &src)
 
void Ld4r (const VRegister &vt, const VRegister &vt2, const VRegister &vt3, const VRegister &vt4, const MemOperand &src)
 
void St2 (const VRegister &vt, const VRegister &vt2, const MemOperand &dst)
 
void St3 (const VRegister &vt, const VRegister &vt2, const VRegister &vt3, const MemOperand &dst)
 
void St4 (const VRegister &vt, const VRegister &vt2, const VRegister &vt3, const VRegister &vt4, const MemOperand &dst)
 
void St2 (const VRegister &vt, const VRegister &vt2, int lane, const MemOperand &dst)
 
void St3 (const VRegister &vt, const VRegister &vt2, const VRegister &vt3, int lane, const MemOperand &dst)
 
void St4 (const VRegister &vt, const VRegister &vt2, const VRegister &vt3, const VRegister &vt4, int lane, const MemOperand &dst)
 
void Tbx (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void Tbx (const VRegister &vd, const VRegister &vn, const VRegister &vn2, const VRegister &vm)
 
void Tbx (const VRegister &vd, const VRegister &vn, const VRegister &vn2, const VRegister &vn3, const VRegister &vm)
 
void Tbx (const VRegister &vd, const VRegister &vn, const VRegister &vn2, const VRegister &vn3, const VRegister &vn4, const VRegister &vm)
 
void PushSizeRegList (RegList registers, unsigned reg_size)
 
void PushSizeRegList (DoubleRegList registers, unsigned reg_size)
 
void PopSizeRegList (RegList registers, unsigned reg_size)
 
void PopSizeRegList (DoubleRegList registers, unsigned reg_size)
 
void PushXRegList (RegList regs)
 
void PopXRegList (RegList regs)
 
void PushWRegList (RegList regs)
 
void PopWRegList (RegList regs)
 
void PushQRegList (DoubleRegList regs)
 
void PopQRegList (DoubleRegList regs)
 
void PushDRegList (DoubleRegList regs)
 
void PopDRegList (DoubleRegList regs)
 
void PushSRegList (DoubleRegList regs)
 
void PopSRegList (DoubleRegList regs)
 
void PushAll (RegList registers)
 
void PopAll (RegList registers)
 
void PushAll (DoubleRegList registers, int stack_slot_size=kDoubleSize)
 
void PopAll (DoubleRegList registers, int stack_slot_size=kDoubleSize)
 
void PushMultipleTimes (CPURegister src, Register count)
 
void PeekPair (const CPURegister &dst1, const CPURegister &dst2, int offset)
 
void PushCalleeSavedRegisters ()
 
void PopCalleeSavedRegisters ()
 
void AssertFeedbackCell (Register object, Register scratch) NOOP_UNLESS_DEBUG_CODE
 
void AssertFeedbackVector (Register object)
 
void AssertFeedbackVector (Register object, Register scratch) NOOP_UNLESS_DEBUG_CODE
 
void GenerateTailCallToReturnedCode (Runtime::FunctionId function_id)
 
void ReplaceClosureCodeWithOptimizedCode (Register optimized_code, Register closure)
 
Condition LoadFeedbackVectorFlagsAndCheckIfNeedsProcessing (Register flags, Register feedback_vector, CodeKind current_code_kind)
 
void LoadFeedbackVectorFlagsAndJumpIfNeedsProcessing (Register flags, Register feedback_vector, CodeKind current_code_kind, Label *flags_need_processing)
 
void OptimizeCodeOrTailCallOptimizedCodeSlot (Register flags, Register feedback_vector)
 
template<typename Field >
void DecodeField (Register dst, Register src)
 
template<typename Field >
void DecodeField (Register reg)
 
void JumpIfCodeIsMarkedForDeoptimization (Register code, Register scratch, Label *if_marked_for_deoptimization)
 
void JumpIfCodeIsTurbofanned (Register code, Register scratch, Label *if_marked_for_deoptimization)
 
Operand ClearedValue () const
 
Operand ReceiverOperand ()
 
void JumpIfNotSmi (Register value, Label *not_smi_label)
 
void AssertMap (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertCode (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertConstructor (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertFunction (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertCallableFunction (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertGeneratorObject (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertBoundFunction (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertUndefinedOrAllocationSite (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertSmiOrHeapObjectInMainCompressionCage (Register object) NOOP_UNLESS_DEBUG_CODE
 
void CallRuntime (const Runtime::Function *f, int num_arguments)
 
void CallRuntime (Runtime::FunctionId fid, int num_arguments)
 
void CallRuntime (Runtime::FunctionId fid)
 
void TailCallRuntime (Runtime::FunctionId fid)
 
void JumpToExternalReference (const ExternalReference &builtin, bool builtin_exit_frame=false)
 
void InvokePrologue (Register expected_parameter_count, Register actual_parameter_count, InvokeType type)
 
void CallDebugOnFunctionCall (Register fun, Register new_target, Register expected_parameter_count_or_dispatch_handle, Register actual_parameter_count)
 
void InvokeFunctionCode (Register function, Register new_target, Register expected_parameter_count, Register actual_parameter_count, InvokeType type)
 
void InvokeFunctionWithNewTarget (Register function, Register new_target, Register actual_parameter_count, InvokeType type)
 
void InvokeFunction (Register function, Register expected_parameter_count, Register actual_parameter_count, InvokeType type)
 
void CompareObjectType (Register heap_object, Register map, Register type_reg, InstanceType type)
 
void IsObjectType (Register heap_object, Register scratch1, Register scratch2, InstanceType type)
 
void IsObjectTypeInRange (Register heap_object, Register scratch, InstanceType lower_limit, InstanceType higher_limit)
 
void JumpIfObjectType (Register object, Register map, Register type_reg, InstanceType type, Label *if_cond_pass, Condition cond=eq)
 
void JumpIfJSAnyIsNotPrimitive (Register heap_object, Register scratch, Label *target, Label::Distance distance=Label::kFar, Condition condition=Condition::kUnsignedGreaterThanEqual)
 
void JumpIfJSAnyIsPrimitive (Register heap_object, Register scratch, Label *target, Label::Distance distance=Label::kFar)
 
void CompareInstanceType (Register map, Register type_reg, InstanceType type)
 
void CompareInstanceTypeRange (Register map, Register type_reg, InstanceType lower_limit, InstanceType higher_limit)
 
void LoadElementsKindFromMap (Register result, Register map)
 
void CompareRoot (const Register &obj, RootIndex index, ComparisonMode mode=ComparisonMode::kDefault)
 
void CompareTaggedRoot (const Register &with, RootIndex index)
 
void JumpIfRoot (const Register &obj, RootIndex index, Label *if_equal)
 
void JumpIfNotRoot (const Register &obj, RootIndex index, Label *if_not_equal)
 
void JumpIfIsInRange (const Register &value, unsigned lower_limit, unsigned higher_limit, Label *on_in_range)
 
void EnterExitFrame (const Register &scratch, int extra_space, StackFrame::Type frame_type)
 
void LeaveExitFrame (const Register &scratch, const Register &scratch2)
 
void LoadGlobalProxy (Register dst)
 
void LoadWeakValue (Register out, Register in, Label *target_if_cleared)
 
void IncrementCounter (StatsCounter *counter, int value, Register scratch1, Register scratch2)
 
void EmitIncrementCounter (StatsCounter *counter, int value, Register scratch1, Register scratch2)
 
void DecrementCounter (StatsCounter *counter, int value, Register scratch1, Register scratch2)
 
void LoadStackLimit (Register destination, StackLimitKind kind)
 
void StackOverflowCheck (Register num_args, Label *stack_overflow)
 
void RecordWriteField (Register object, int offset, Register value, LinkRegisterStatus lr_status, SaveFPRegsMode save_fp, SmiCheck smi_check=SmiCheck::kInline, ReadOnlyCheck ro_check=ReadOnlyCheck::kInline, SlotDescriptor slot=SlotDescriptor::ForDirectPointerSlot())
 
void RecordWrite (Register object, Operand offset, Register value, LinkRegisterStatus lr_status, SaveFPRegsMode save_fp, SmiCheck smi_check=SmiCheck::kInline, ReadOnlyCheck ro_check=ReadOnlyCheck::kInline, SlotDescriptor slot=SlotDescriptor::ForDirectPointerSlot())
 
void LoadNativeContextSlot (Register dst, int index)
 
void TryLoadOptimizedOsrCode (Register scratch_and_result, CodeKind min_opt_level, Register feedback_vector, FeedbackSlot slot, Label *on_result, Label::Distance distance)
 
void MemoryChunkHeaderFromObject (Register object, Register header)
 
void CheckPageFlag (Register object, Register scratch, int mask, Condition cc, Label *condition_met, Label::Distance condition_met_distance=Label::kFar)
 
void EnterFrame (StackFrame::Type type)
 
void EnterFrame (StackFrame::Type type, bool load_constant_pool_pointer_reg)
 
void LeaveFrame (StackFrame::Type type)
 
void AllocateStackSpace (Register bytes)
 
void AllocateStackSpace (int bytes)
 
void Abort (AbortReason reason)
 
void Assert (Condition cc, AbortReason reason) NOOP_UNLESS_DEBUG_CODE
 
void AssertUnreachable (AbortReason reason) NOOP_UNLESS_DEBUG_CODE
 
void Check (Condition cc, AbortReason reason)
 
void CheckStackAlignment ()
 
void AlignStackPointer ()
 
void Move (Register dst, int32_t x)
 
void Move (Register dst, const Immediate &src)
 
void Move (Register dst, Tagged< Smi > src)
 
void Move (Register dst, Handle< HeapObject > src)
 
void Move (Register dst, Register src)
 
void Move (Register dst, Operand src)
 
void Move (Operand dst, const Immediate &src)
 
void Move (XMMRegister dst, uint32_t src)
 
void Move (XMMRegister dst, uint64_t src)
 
void Move (XMMRegister dst, float src)
 
void Move (XMMRegister dst, double src)
 
Operand EntryFromBuiltinAsOperand (Builtin builtin)
 
void Call (Register reg)
 
void Call (Operand op)
 
void Call (Label *target)
 
void Call (Handle< Code > code_object, RelocInfo::Mode rmode)
 
void LoadEntryFromBuiltinIndex (Register builtin_index, Register target)
 
void CallBuiltinByIndex (Register builtin_index, Register target)
 
void CallBuiltin (Builtin builtin)
 
void TailCallBuiltin (Builtin builtin)
 
void LoadCodeInstructionStart (Register destination, Register code_object, CodeEntrypointTag=kDefaultCodeEntrypointTag)
 
void CallCodeObject (Register code_object)
 
void JumpCodeObject (Register code_object, JumpMode jump_mode=JumpMode::kJump)
 
void CallJSFunction (Register function_object, uint16_t argument_count)
 
void JumpJSFunction (Register function_object, JumpMode jump_mode=JumpMode::kJump)
 
void Jump (const ExternalReference &reference)
 
void Jump (Handle< Code > code_object, RelocInfo::Mode rmode)
 
void LoadLabelAddress (Register dst, Label *lbl)
 
void LoadMap (Register destination, Register object)
 
void LoadFeedbackVector (Register dst, Register closure, Register scratch, Label *fbv_undef, Label::Distance distance)
 
void Trap ()
 
void DebugBreak ()
 
void CallForDeoptimization (Builtin target, int deopt_id, Label *exit, DeoptimizeKind kind, Label *ret, Label *jump_deoptimization_entry_label)
 
void JumpIfSmi (Register value, Label *smi_label, Label::Distance distance=Label::kFar)
 
void JumpIfSmi (Operand value, Label *smi_label, Label::Distance distance=Label::kFar)
 
void JumpIfEqual (Register a, int32_t b, Label *dest)
 
void JumpIfLessThan (Register a, int32_t b, Label *dest)
 
void SmiUntag (Register reg)
 
void SmiUntag (Register output, Register value)
 
void SmiToInt32 (Register reg)
 
void PrepareCallCFunction (int num_arguments, Register scratch)
 
int CallCFunction (ExternalReference function, int num_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, Label *return_location=nullptr)
 
int CallCFunction (Register function, int num_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, Label *return_location=nullptr)
 
void ShlPair (Register high, Register low, uint8_t imm8)
 
void ShlPair_cl (Register high, Register low)
 
void ShrPair (Register high, Register low, uint8_t imm8)
 
void ShrPair_cl (Register high, Register low)
 
void SarPair (Register high, Register low, uint8_t imm8)
 
void SarPair_cl (Register high, Register low)
 
void StubPrologue (StackFrame::Type type)
 
void Prologue ()
 
void DropArguments (Register count, Register scratch)
 
void DropArgumentsAndPushNewReceiver (Register argc, Register receiver, Register scratch)
 
void DropArgumentsAndPushNewReceiver (Register argc, Operand receiver, Register scratch)
 
void Lzcnt (Register dst, Register src)
 
void Lzcnt (Register dst, Operand src)
 
void Tzcnt (Register dst, Register src)
 
void Tzcnt (Register dst, Operand src)
 
void Popcnt (Register dst, Register src)
 
void Popcnt (Register dst, Operand src)
 
void PushReturnAddressFrom (Register src)
 
void PopReturnAddressTo (Register dst)
 
void PushReturnAddressFrom (XMMRegister src, Register scratch)
 
void PopReturnAddressTo (XMMRegister dst, Register scratch)
 
void Ret ()
 
void InitializeRootRegister ()
 
Operand RootAsOperand (RootIndex index)
 
void LoadRoot (Register destination, RootIndex index) final
 
void LoadFromConstantsTable (Register destination, int constant_index) final
 
void LoadRootRegisterOffset (Register destination, intptr_t offset) final
 
void LoadRootRelative (Register destination, int32_t offset) final
 
void StoreRootRelative (int32_t offset, Register value) final
 
void PushPC ()
 
void PushArray (Register array, Register size, Register scratch, PushArrayOrder order=PushArrayOrder::kNormal)
 
Operand ExternalReferenceAsOperand (ExternalReference reference, Register scratch)
 
Operand ExternalReferenceAsOperand (IsolateFieldId id)
 
Operand ExternalReferenceAddressAsOperand (ExternalReference reference)
 
Operand HeapObjectAsOperand (Handle< HeapObject > object)
 
void LoadAddress (Register destination, ExternalReference source)
 
void CompareRoot (Register with, RootIndex index)
 
void CompareRoot (Register with, Register scratch, RootIndex index)
 
void Ret (int bytes_dropped, Register scratch)
 
void PextrdPreSse41 (Register dst, XMMRegister src, uint8_t imm8)
 
void PinsrdPreSse41 (XMMRegister dst, Register src, uint8_t imm8, uint32_t *load_pc_offset)
 
void PinsrdPreSse41 (XMMRegister dst, Operand src, uint8_t imm8, uint32_t *load_pc_offset)
 
void Cvtsi2ss (XMMRegister dst, Register src)
 
void Cvtsi2ss (XMMRegister dst, Operand src)
 
void Cvtsi2sd (XMMRegister dst, Register src)
 
void Cvtsi2sd (XMMRegister dst, Operand src)
 
void Cvtui2ss (XMMRegister dst, Register src, Register tmp)
 
void Cvtui2ss (XMMRegister dst, Operand src, Register tmp)
 
void Cvttss2ui (Register dst, XMMRegister src, XMMRegister tmp)
 
void Cvttss2ui (Register dst, Operand src, XMMRegister tmp)
 
void Cvtui2sd (XMMRegister dst, Register src, Register scratch)
 
void Cvtui2sd (XMMRegister dst, Operand src, Register scratch)
 
void Cvttsd2ui (Register dst, XMMRegister src, XMMRegister tmp)
 
void Cvttsd2ui (Register dst, Operand src, XMMRegister tmp)
 
void Push (Register src)
 
void Push (Operand src)
 
void Push (Immediate value)
 
void Push (Handle< HeapObject > handle)
 
void Push (Tagged< Smi > smi)
 
void Push (XMMRegister src, Register scratch)
 
void Pop (Register dst)
 
void Pop (Operand dst)
 
void Pop (XMMRegister dst, Register scratch)
 
void MaybeSaveRegisters (RegList registers)
 
void MaybeRestoreRegisters (RegList registers)
 
void CallEphemeronKeyBarrier (Register object, Register slot_address, SaveFPRegsMode fp_mode)
 
void CallRecordWriteStubSaveRegisters (Register object, Register slot_address, SaveFPRegsMode fp_mode, StubCallMode mode=StubCallMode::kCallBuiltinPointer)
 
void CallRecordWriteStub (Register object, Register slot_address, SaveFPRegsMode fp_mode, StubCallMode mode=StubCallMode::kCallBuiltinPointer)
 
int RequiredStackSizeForCallerSaved (SaveFPRegsMode fp_mode, Register exclusion=no_reg) const
 
int PushCallerSaved (SaveFPRegsMode fp_mode, Register exclusion=no_reg)
 
int PopCallerSaved (SaveFPRegsMode fp_mode, Register exclusion=no_reg)
 
void ComputeCodeStartAddress (Register dst)
 
void CodeEntry ()
 
void ExceptionHandler ()
 
void BindExceptionHandler (Label *label)
 
void PushRoot (RootIndex index)
 
void JumpIfRoot (Register with, RootIndex index, Label *if_equal, Label::Distance if_equal_distance=Label::kFar)
 
void JumpIfNotRoot (Register with, RootIndex index, Label *if_not_equal, Label::Distance if_not_equal_distance=Label::kFar)
 
void CompareRange (Register value, unsigned lower_limit, unsigned higher_limit, Register scratch)
 
void JumpIfIsInRange (Register value, unsigned lower_limit, unsigned higher_limit, Register scratch, Label *on_in_range, Label::Distance near_jump=Label::kFar)
 
void RecordWriteField (Register object, int offset, Register value, Register scratch, SaveFPRegsMode save_fp, SmiCheck smi_check=SmiCheck::kInline)
 
void RecordWrite (Register object, Register address, Register value, SaveFPRegsMode save_fp, SmiCheck smi_check=SmiCheck::kInline)
 
void EnterExitFrame (int extra_slots, StackFrame::Type frame_type, Register c_function)
 
void LeaveExitFrame (Register scratch)
 
void LoadGlobalProxy (Register dst)
 
void LoadNativeContextSlot (Register dst, int index)
 
void InvokeFunctionCode (Register function, Register new_target, Register expected_parameter_count, Register actual_parameter_count, InvokeType type)
 
void CallDebugOnFunctionCall (Register fun, Register new_target, Register expected_parameter_count, Register actual_parameter_count)
 
void InvokeFunction (Register function, Register new_target, Register actual_parameter_count, InvokeType type)
 
void CmpObjectType (Register heap_object, InstanceType type, Register map)
 
void CmpInstanceType (Register map, InstanceType type)
 
void CmpInstanceTypeRange (Register map, Register instance_type_out, Register scratch, InstanceType lower_limit, InstanceType higher_limit)
 
void SmiTag (Register reg)
 
void SmiCompare (Register smi1, Register smi2)
 
void SmiCompare (Register dst, Tagged< Smi > src)
 
void SmiCompare (Register dst, Operand src)
 
void SmiCompare (Operand dst, Register src)
 
void SmiCompare (Operand dst, Smi src)
 
void JumpIfNotSmi (Register value, Label *not_smi_label, Label::Distance distance=Label::kFar)
 
void JumpIfNotSmi (Operand value, Label *smi_label, Label::Distance distance=Label::kFar)
 
template<typename Field >
void DecodeField (Register reg)
 
void TestCodeIsMarkedForDeoptimization (Register code)
 
Immediate ClearedValue () const
 
void AssertFeedbackCell (Register object, Register scratch) NOOP_UNLESS_DEBUG_CODE
 
void AssertFeedbackVector (Register object, Register scratch) NOOP_UNLESS_DEBUG_CODE
 
void GenerateTailCallToReturnedCode (Runtime::FunctionId function_id)
 
void ReplaceClosureCodeWithOptimizedCode (Register optimized_code, Register closure, Register scratch1, Register slot_address)
 
void LoadFeedbackVectorFlagsAndJumpIfNeedsProcessing (Register flags, XMMRegister saved_feedback_vector, CodeKind current_code_kind, Label *flags_need_processing)
 
void OptimizeCodeOrTailCallOptimizedCodeSlot (Register flags, XMMRegister saved_feedback_vector)
 
void AssertSmi (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertSmi (Operand object) NOOP_UNLESS_DEBUG_CODE
 
void AssertNotSmi (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertFunction (Register object, Register scratch) NOOP_UNLESS_DEBUG_CODE
 
void AssertCallableFunction (Register object, Register scratch) NOOP_UNLESS_DEBUG_CODE
 
void AssertConstructor (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertBoundFunction (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertGeneratorObject (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertUndefinedOrAllocationSite (Register object, Register scratch) NOOP_UNLESS_DEBUG_CODE
 
void AssertJSAny (Register object, Register map_tmp, AbortReason abort_reason) NOOP_UNLESS_DEBUG_CODE
 
void PushStackHandler (Register scratch)
 
void PopStackHandler (Register scratch)
 
void CallRuntime (const Runtime::Function *f, int num_arguments)
 
void CallRuntime (Runtime::FunctionId fid)
 
void CallRuntime (Runtime::FunctionId fid, int num_arguments)
 
void TailCallRuntime (Runtime::FunctionId fid)
 
void JumpToExternalReference (const ExternalReference &ext, bool builtin_exit_frame=false)
 
void Drop (int element_count)
 
void LoadWeakValue (Register in_out, Label *target_if_cleared)
 
void IncrementCounter (StatsCounter *counter, int value, Register scratch)
 
void EmitIncrementCounter (StatsCounter *counter, int value, Register scratch)
 
void DecrementCounter (StatsCounter *counter, int value, Register scratch)
 
void EmitDecrementCounter (StatsCounter *counter, int value, Register scratch)
 
void CompareStackLimit (Register with, StackLimitKind kind)
 
Operand StackLimitAsOperand (StackLimitKind kind)
 
void StackOverflowCheck (Register num_args, Register scratch, Label *stack_overflow, bool include_receiver=false)
 
void EnterFrame (StackFrame::Type type)
 
void EnterFrame (StackFrame::Type type, bool load_constant_pool_pointer_reg)
 
void LeaveFrame (StackFrame::Type type)
 
void AllocateStackSpace (Register bytes)
 
void AllocateStackSpace (int bytes)
 
void StubPrologue (StackFrame::Type type)
 
void Prologue ()
 
void InitializeRootRegister ()
 
void jmp (Label *L)
 
void Trap ()
 
void DebugBreak ()
 
void Assert (Condition cc, AbortReason reason, Register rj, Operand rk) NOOP_UNLESS_DEBUG_CODE
 
void AssertJSAny (Register object, Register map_tmp, Register tmp, AbortReason abort_reason) NOOP_UNLESS_DEBUG_CODE
 
void Check (Condition cc, AbortReason reason, Register rj, Operand rk)
 
void SbxCheck (Condition cc, AbortReason reason, Register rj, Operand rk)
 
void Abort (AbortReason msg)
 
void CompareWord (Condition cond, Register dst, Register lhs, const Operand &rhs)
 
void Branch (Label *label, bool need_link=false)
 
void Branch (Label *label, Condition cond, Register r1, const Operand &r2, bool need_link=false)
 
void BranchShort (Label *label, Condition cond, Register r1, const Operand &r2, bool need_link=false)
 
void Branch (Label *L, Condition cond, Register rj, RootIndex index, bool need_sign_extend=true)
 
void CompareTaggedAndBranch (Label *label, Condition cond, Register r1, const Operand &r2, bool need_link=false)
 
void CompareF32 (FPURegister cmp1, FPURegister cmp2, FPUCondition cc, CFRegister cd=FCC0)
 
void CompareIsNanF32 (FPURegister cmp1, FPURegister cmp2, CFRegister cd=FCC0)
 
void CompareF64 (FPURegister cmp1, FPURegister cmp2, FPUCondition cc, CFRegister cd=FCC0)
 
void CompareIsNanF64 (FPURegister cmp1, FPURegister cmp2, CFRegister cd=FCC0)
 
void BranchTrueShortF (Label *target, CFRegister cc=FCC0)
 
void BranchFalseShortF (Label *target, CFRegister cc=FCC0)
 
void BranchTrueF (Label *target, CFRegister cc=FCC0)
 
void BranchFalseF (Label *target, CFRegister cc=FCC0)
 
void LiLower32BitHelper (Register rd, Operand j)
 
void li_optimized (Register rd, Operand j, LiFlags mode=OPTIMIZE_SIZE)
 
void li (Register rd, Operand j, LiFlags mode=OPTIMIZE_SIZE)
 
void li (Register rd, int64_t j, LiFlags mode=OPTIMIZE_SIZE)
 
void li (Register rd, int32_t j, LiFlags mode=OPTIMIZE_SIZE)
 
void li (Register dst, Handle< HeapObject > value, RelocInfo::Mode rmode=RelocInfo::NO_INFO, LiFlags mode=OPTIMIZE_SIZE)
 
void li (Register dst, ExternalReference value, LiFlags mode=OPTIMIZE_SIZE)
 
void LoadLabelRelative (Register dst, Label *target)
 
void LoadFromConstantsTable (Register destination, int constant_index) final
 
void LoadRootRegisterOffset (Register destination, intptr_t offset) final
 
void LoadRootRelative (Register destination, int32_t offset) final
 
void StoreRootRelative (int32_t offset, Register value) final
 
MemOperand ExternalReferenceAsOperand (ExternalReference reference, Register scratch)
 
MemOperand ExternalReferenceAsOperand (IsolateFieldId id)
 
void Move (Register output, MemOperand operand)
 
void GenPCRelativeJump (Register rd, int64_t offset)
 
void GenPCRelativeJumpAndLink (Register rd, int64_t offset)
 
bool CanUseNearCallOrJump (RelocInfo::Mode rmode)
 
void Jump (Register target, COND_ARGS)
 
void Jump (intptr_t target, RelocInfo::Mode rmode, COND_ARGS)
 
void Jump (Address target, RelocInfo::Mode rmode, COND_ARGS)
 
void Jump (Handle< Code > code, RelocInfo::Mode rmode, COND_ARGS)
 
void Jump (const ExternalReference &reference)
 
void Call (Register target, COND_ARGS)
 
void Call (Address target, RelocInfo::Mode rmode, COND_ARGS)
 
void Call (Handle< Code > code, RelocInfo::Mode rmode=RelocInfo::CODE_TARGET, COND_ARGS)
 
void Call (Label *target)
 
void LoadEntryFromBuiltinIndex (Register builtin_index, Register target)
 
void LoadEntryFromBuiltin (Builtin builtin, Register destination)
 
MemOperand EntryFromBuiltinAsOperand (Builtin builtin)
 
void CallBuiltinByIndex (Register builtin_index, Register target)
 
void CallBuiltin (Builtin builtin)
 
void TailCallBuiltin (Builtin builtin)
 
void TailCallBuiltin (Builtin builtin, Condition cond, Register type, Operand range)
 
void LoadCodeInstructionStart (Register destination, Register code_object, CodeEntrypointTag tag)
 
void CallCodeObject (Register code_object, CodeEntrypointTag tag)
 
void JumpCodeObject (Register code_object, CodeEntrypointTag tag, JumpMode jump_mode=JumpMode::kJump)
 
void CallJSFunction (Register function_object, uint16_t argument_count)
 
void JumpJSFunction (Register function_object, JumpMode jump_mode=JumpMode::kJump)
 
void StoreReturnAddressAndCall (Register target)
 
void BailoutIfDeoptimized ()
 
void CallForDeoptimization (Builtin target, int deopt_id, Label *exit, DeoptimizeKind kind, Label *ret, Label *jump_deoptimization_entry_label)
 
void Ret (COND_ARGS)
 
void Drop (int count, Condition cond=cc_always, Register reg=no_reg, const Operand &op=Operand(no_reg))
 
void DropArguments (Register count)
 
void DropArgumentsAndPushNewReceiver (Register argc, Register receiver)
 
void Ld_d (Register rd, const MemOperand &rj)
 
void St_d (Register rd, const MemOperand &rj)
 
void Push (Handle< HeapObject > handle)
 
void Push (Tagged< Smi > smi)
 
void Push (Register src)
 
void Push (Register src1, Register src2)
 
void Push (Register src1, Register src2, Register src3)
 
void Push (Register src1, Register src2, Register src3, Register src4)
 
void Push (Register src1, Register src2, Register src3, Register src4, Register src5)
 
void PushArray (Register array, Register size, Register scratch, Register scratch2, PushArrayOrder order=kNormal)
 
void MaybeSaveRegisters (RegList registers)
 
void MaybeRestoreRegisters (RegList registers)
 
void CallEphemeronKeyBarrier (Register object, Operand offset, SaveFPRegsMode fp_mode)
 
void CallIndirectPointerBarrier (Register object, Operand offset, SaveFPRegsMode fp_mode, IndirectPointerTag tag)
 
void CallRecordWriteStubSaveRegisters (Register object, Operand offset, SaveFPRegsMode fp_mode, StubCallMode mode=StubCallMode::kCallBuiltinPointer)
 
void CallRecordWriteStub (Register object, Register slot_address, SaveFPRegsMode fp_mode, StubCallMode mode=StubCallMode::kCallBuiltinPointer)
 
void MoveObjectAndSlot (Register dst_object, Register dst_slot, Register object, Operand offset)
 
void MultiPush (RegList regs)
 
void MultiPush (RegList regs1, RegList regs2)
 
void MultiPush (RegList regs1, RegList regs2, RegList regs3)
 
void MultiPushFPU (DoubleRegList regs)
 
int RequiredStackSizeForCallerSaved (SaveFPRegsMode fp_mode, Register exclusion1=no_reg, Register exclusion2=no_reg, Register exclusion3=no_reg) const
 
int PushCallerSaved (SaveFPRegsMode fp_mode, Register exclusion1=no_reg, Register exclusion2=no_reg, Register exclusion3=no_reg)
 
int PopCallerSaved (SaveFPRegsMode fp_mode, Register exclusion1=no_reg, Register exclusion2=no_reg, Register exclusion3=no_reg)
 
void Pop (Register dst)
 
void Pop (Register src1, Register src2)
 
void Pop (Register src1, Register src2, Register src3)
 
void MultiPop (RegList regs)
 
void MultiPop (RegList regs1, RegList regs2)
 
void MultiPop (RegList regs1, RegList regs2, RegList regs3)
 
void MultiPopFPU (DoubleRegList regs)
 
void SmiTag (Register dst, Register src)
 
void SmiTag (Register reg)
 
void SmiUntag (Register dst, const MemOperand &src)
 
void SmiUntag (Register dst, Register src)
 
void SmiUntag (Register reg)
 
void SmiScale (Register dst, Register src, int scale)
 
void SmiToInt32 (Register smi)
 
void AssertNotSmi (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertSmi (Register object) NOOP_UNLESS_DEBUG_CODE
 
int CalculateStackPassedWords (int num_reg_arguments, int num_double_arguments)
 
void PrepareCallCFunction (int num_reg_arguments, int num_double_registers, Register scratch)
 
void PrepareCallCFunction (int num_reg_arguments, Register scratch)
 
int CallCFunction (ExternalReference function, int num_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, Label *return_location=nullptr)
 
int CallCFunction (Register function, int num_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, Label *return_location=nullptr)
 
int CallCFunction (ExternalReference function, int num_reg_arguments, int num_double_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, Label *return_location=nullptr)
 
int CallCFunction (Register function, int num_reg_arguments, int num_double_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, Label *return_location=nullptr)
 
void PrepareCEntryArgs (int num_args)
 
void PrepareCEntryFunction (const ExternalReference &ref)
 
void CheckPageFlag (Register object, int mask, Condition cc, Label *condition_met)
 
void TruncateDoubleToI (Isolate *isolate, Zone *zone, Register result, DoubleRegister double_input, StubCallMode stub_mode)
 
void Movz (Register rd, Register rj, Register rk)
 
void Movn (Register rd, Register rj, Register rk)
 
void LoadZeroIfFPUCondition (Register dest, CFRegister=FCC0)
 
void LoadZeroIfNotFPUCondition (Register dest, CFRegister=FCC0)
 
void LoadZeroIfConditionNotZero (Register dest, Register condition)
 
void LoadZeroIfConditionZero (Register dest, Register condition)
 
void Clz_w (Register rd, Register rj)
 
void Clz_d (Register rd, Register rj)
 
void Ctz_w (Register rd, Register rj)
 
void Ctz_d (Register rd, Register rj)
 
void Popcnt_w (Register rd, Register rj)
 
void Popcnt_d (Register rd, Register rj)
 
void ExtractBits (Register dest, Register source, Register pos, int size, bool sign_extend=false)
 
void InsertBits (Register dest, Register source, Register pos, int size)
 
void Bstrins_w (Register rk, Register rj, uint16_t msbw, uint16_t lswb)
 
void Bstrins_d (Register rk, Register rj, uint16_t msbw, uint16_t lsbw)
 
void Bstrpick_w (Register rk, Register rj, uint16_t msbw, uint16_t lsbw)
 
void Bstrpick_d (Register rk, Register rj, uint16_t msbw, uint16_t lsbw)
 
void Neg_s (FPURegister fd, FPURegister fj)
 
void Neg_d (FPURegister fd, FPURegister fk)
 
void Trunc_uw_s (FPURegister fd, FPURegister fj, FPURegister scratch)
 
void Trunc_uw_s (Register rd, FPURegister fj, FPURegister scratch)
 
void ByteSwap (Register dest, Register src, int operand_size)
 
void Ld_b (Register rd, const MemOperand &rj)
 
void Ld_bu (Register rd, const MemOperand &rj)
 
void St_b (Register rd, const MemOperand &rj)
 
void Ld_h (Register rd, const MemOperand &rj)
 
void Ld_hu (Register rd, const MemOperand &rj)
 
void St_h (Register rd, const MemOperand &rj)
 
void Ld_w (Register rd, const MemOperand &rj)
 
void Ld_wu (Register rd, const MemOperand &rj)
 
void St_w (Register rd, const MemOperand &rj)
 
void Fld_s (FPURegister fd, const MemOperand &src)
 
void Fst_s (FPURegister fj, const MemOperand &dst)
 
void Fld_d (FPURegister fd, const MemOperand &src)
 
void Fst_d (FPURegister fj, const MemOperand &dst)
 
void Ll_w (Register rd, const MemOperand &rj)
 
void Sc_w (Register rd, const MemOperand &rj)
 
void Ll_d (Register rd, const MemOperand &rj)
 
void Sc_d (Register rd, const MemOperand &rj)
 
void Float32Max (FPURegister dst, FPURegister src1, FPURegister src2, Label *out_of_line)
 
void Float32Min (FPURegister dst, FPURegister src1, FPURegister src2, Label *out_of_line)
 
void Float64Max (FPURegister dst, FPURegister src1, FPURegister src2, Label *out_of_line)
 
void Float64Min (FPURegister dst, FPURegister src1, FPURegister src2, Label *out_of_line)
 
void Float32MaxOutOfLine (FPURegister dst, FPURegister src1, FPURegister src2)
 
void Float32MinOutOfLine (FPURegister dst, FPURegister src1, FPURegister src2)
 
void Float64MaxOutOfLine (FPURegister dst, FPURegister src1, FPURegister src2)
 
void Float64MinOutOfLine (FPURegister dst, FPURegister src1, FPURegister src2)
 
bool IsDoubleZeroRegSet ()
 
void mov (Register rd, Register rj)
 
void Move (Register dst, Handle< HeapObject > handle)
 
void Move (Register dst, Tagged< Smi > value)
 
void Move (Register dst, Register src)
 
void LoadIsolateField (Register dst, IsolateFieldId id)
 
void FmoveLow (Register dst_low, FPURegister src)
 
void FmoveLow (FPURegister dst, Register src_low)
 
void Move (FPURegister dst, FPURegister src)
 
void Move_d (FPURegister dst, FPURegister src)
 
void Move_s (FPURegister dst, FPURegister src)
 
void Move (FPURegister dst, float imm)
 
void Move (FPURegister dst, double imm)
 
void Move (FPURegister dst, uint32_t src)
 
void Move (FPURegister dst, uint64_t src)
 
void AddOverflow_d (Register dst, Register left, const Operand &right, Register overflow)
 
void SubOverflow_d (Register dst, Register left, const Operand &right, Register overflow)
 
void MulOverflow_w (Register dst, Register left, const Operand &right, Register overflow)
 
void MulOverflow_d (Register dst, Register left, const Operand &right, Register overflow)
 
template<typename Func >
void GenerateSwitchTable (Register index, size_t case_count, Func GetLabelFunction)
 
void LoadRoot (Register destination, RootIndex index) final
 
void LoadRoot (Register destination, RootIndex index, Condition cond, Register src1, const Operand &src2)
 
void LoadTaggedRoot (Register destination, RootIndex index)
 
void LoadMap (Register destination, Register object)
 
void LoadCompressedMap (Register dst, Register object)
 
void LoadFeedbackVector (Register dst, Register closure, Register scratch, Label *fbv_undef)
 
void FPUCanonicalizeNaN (const DoubleRegister dst, const DoubleRegister src)
 
void Ffint_d_uw (FPURegister fd, FPURegister fj)
 
void Ffint_d_uw (FPURegister fd, Register rj)
 
void Ffint_d_ul (FPURegister fd, FPURegister fj)
 
void Ffint_d_ul (FPURegister fd, Register rj)
 
void Ffint_s_uw (FPURegister fd, FPURegister fj)
 
void Ffint_s_uw (FPURegister fd, Register rj)
 
void Ffint_s_ul (FPURegister fd, FPURegister fj)
 
void Ffint_s_ul (FPURegister fd, Register rj)
 
void Ftintrz_uw_d (FPURegister fd, FPURegister fj, FPURegister scratch)
 
void Ftintrz_uw_d (Register rd, FPURegister fj, FPURegister scratch)
 
void Ftintrz_uw_s (FPURegister fd, FPURegister fs, FPURegister scratch)
 
void Ftintrz_uw_s (Register rd, FPURegister fs, FPURegister scratch)
 
void Ftintrz_ul_d (FPURegister fd, FPURegister fj, FPURegister scratch, Register result=no_reg)
 
void Ftintrz_ul_d (Register rd, FPURegister fj, FPURegister scratch, Register result=no_reg)
 
void Ftintrz_ul_s (FPURegister fd, FPURegister fj, FPURegister scratch, Register result=no_reg)
 
void Ftintrz_ul_s (Register rd, FPURegister fj, FPURegister scratch, Register result=no_reg)
 
void Trunc_d (FPURegister fd, FPURegister fj)
 
void Round_d (FPURegister fd, FPURegister fj)
 
void Floor_d (FPURegister fd, FPURegister fj)
 
void Ceil_d (FPURegister fd, FPURegister fj)
 
void Trunc_s (FPURegister fd, FPURegister fj)
 
void Round_s (FPURegister fd, FPURegister fj)
 
void Floor_s (FPURegister fd, FPURegister fj)
 
void Ceil_s (FPURegister fd, FPURegister fj)
 
void JumpIfSmi (Register value, Label *smi_label)
 
void JumpIfEqual (Register a, int32_t b, Label *dest)
 
void JumpIfLessThan (Register a, int32_t b, Label *dest)
 
void PushStandardFrame (Register function_reg)
 
void Alsl_w (Register rd, Register rj, Register rk, uint8_t sa)
 
void Alsl_d (Register rd, Register rj, Register rk, uint8_t sa)
 
void ComputeCodeStartAddress (Register dst)
 
void CodeEntry ()
 
void ExceptionHandler ()
 
void BindExceptionHandler (Label *label)
 
void LoadTaggedField (Register destination, const MemOperand &field_operand)
 
void LoadTaggedSignedField (Register destination, const MemOperand &field_operand)
 
void SmiUntagField (Register dst, const MemOperand &src)
 
void StoreTaggedField (Register src, const MemOperand &dst)
 
void AtomicStoreTaggedField (Register dst, const MemOperand &src)
 
void DecompressTaggedSigned (Register dst, const MemOperand &src)
 
void DecompressTagged (Register dst, const MemOperand &src)
 
void DecompressTagged (Register dst, Register src)
 
void DecompressTagged (Register dst, Tagged_t immediate)
 
void DecompressProtected (const Register &destination, const MemOperand &field_operand)
 
void AtomicDecompressTaggedSigned (Register dst, const MemOperand &src)
 
int AtomicDecompressTagged (Register dst, const MemOperand &src)
 
void DecodeSandboxedPointer (Register value)
 
void LoadSandboxedPointerField (Register destination, MemOperand field_operand)
 
void StoreSandboxedPointerField (Register value, MemOperand dst_field_operand)
 
void LoadExternalPointerField (Register destination, MemOperand field_operand, ExternalPointerTagRange tag_range, Register isolate_root=no_reg)
 
void LoadTrustedPointerField (Register destination, MemOperand field_operand, IndirectPointerTag tag)
 
void StoreTrustedPointerField (Register value, MemOperand dst_field_operand)
 
void LoadCodePointerField (Register destination, MemOperand field_operand)
 
void StoreCodePointerField (Register value, MemOperand dst_field_operand)
 
void LoadIndirectPointerField (Register destination, MemOperand field_operand, IndirectPointerTag tag)
 
void StoreIndirectPointerField (Register value, MemOperand dst_field_operand)
 
void LoadProtectedPointerField (Register destination, MemOperand field_operand)
 
void TryInlineTruncateDoubleToI (Register result, DoubleRegister input, Label *done)
 
void LoadReceiver (Register dest)
 
void StoreReceiver (Register rec)
 
bool IsNear (Label *L, Condition cond, int rs_reg)
 
void Swap (Register reg1, Register reg2, Register scratch=no_reg)
 
void TestCodeIsMarkedForDeoptimizationAndJump (Register code_data_container, Register scratch, Condition cond, Label *target)
 
Operand ClearedValue () const
 
void PushRoot (RootIndex index)
 
void CompareRootAndBranch (const Register &obj, RootIndex index, Condition cc, Label *target, ComparisonMode mode=ComparisonMode::kDefault)
 
void CompareTaggedRootAndBranch (const Register &with, RootIndex index, Condition cc, Label *target)
 
void JumpIfRoot (Register with, RootIndex index, Label *if_equal)
 
void JumpIfNotRoot (Register with, RootIndex index, Label *if_not_equal)
 
void JumpIfIsInRange (Register value, unsigned lower_limit, unsigned higher_limit, Label *on_in_range)
 
void JumpIfObjectType (Label *target, Condition cc, Register object, InstanceType instance_type, Register scratch=no_reg)
 
void JumpIfJSAnyIsNotPrimitive (Register heap_object, Register scratch, Label *target, Label::Distance distance=Label::kFar, Condition condition=Condition::kUnsignedGreaterThanEqual)
 
void JumpIfJSAnyIsPrimitive (Register heap_object, Register scratch, Label *target, Label::Distance distance=Label::kFar)
 
void RecordWriteField (Register object, int offset, Register value, RAStatus ra_status, SaveFPRegsMode save_fp, SmiCheck smi_check=SmiCheck::kInline, SlotDescriptor slot=SlotDescriptor::ForDirectPointerSlot())
 
void RecordWrite (Register object, Operand offset, Register value, RAStatus ra_status, SaveFPRegsMode save_fp, SmiCheck smi_check=SmiCheck::kInline, SlotDescriptor slot=SlotDescriptor::ForDirectPointerSlot())
 
void Ftintrz_l_ud (FPURegister fd, FPURegister fj, FPURegister scratch)
 
void Ftintrz_l_d (FPURegister fd, FPURegister fj)
 
void Ftintrne_l_d (FPURegister fd, FPURegister fj)
 
void Ftintrm_l_d (FPURegister fd, FPURegister fj)
 
void Ftintrp_l_d (FPURegister fd, FPURegister fj)
 
void Ftintrz_w_d (FPURegister fd, FPURegister fj)
 
void Ftintrne_w_d (FPURegister fd, FPURegister fj)
 
void Ftintrm_w_d (FPURegister fd, FPURegister fj)
 
void Ftintrp_w_d (FPURegister fd, FPURegister fj)
 
void Madd_s (FPURegister fd, FPURegister fa, FPURegister fj, FPURegister fk)
 
void Madd_d (FPURegister fd, FPURegister fa, FPURegister fj, FPURegister fk)
 
void Msub_s (FPURegister fd, FPURegister fa, FPURegister fj, FPURegister fk)
 
void Msub_d (FPURegister fd, FPURegister fa, FPURegister fj, FPURegister fk)
 
void EnterExitFrame (Register scratch, int stack_space, StackFrame::Type frame_type)
 
void LeaveExitFrame (Register scratch)
 
void AssertStackIsAligned () NOOP_UNLESS_DEBUG_CODE
 
void LoadGlobalProxy (Register dst)
 
void LoadNativeContextSlot (Register dst, int index)
 
void LoadGlobalFunctionInitialMap (Register function, Register map, Register scratch)
 
void CallDebugOnFunctionCall (Register fun, Register new_target, Register expected_parameter_count_or_dispatch_handle, Register actual_parameter_count)
 
void InvokeFunction (Register function, Register expected_parameter_count, Register actual_parameter_count, InvokeType type)
 
void InvokeFunctionWithNewTarget (Register function, Register new_target, Register actual_parameter_count, InvokeType type)
 
void InvokeFunctionCode (Register function, Register new_target, Register expected_parameter_count, Register actual_parameter_count, InvokeType type)
 
void PushStackHandler ()
 
void PopStackHandler ()
 
void GetObjectType (Register function, Register map, Register type_reg)
 
void GetInstanceTypeRange (Register map, Register type_reg, InstanceType lower_limit, Register range)
 
void CallRuntime (const Runtime::Function *f, int num_arguments)
 
void CallRuntime (Runtime::FunctionId fid)
 
void CallRuntime (Runtime::FunctionId fid, int num_arguments)
 
void TailCallRuntime (Runtime::FunctionId fid)
 
void JumpToExternalReference (const ExternalReference &builtin, bool builtin_exit_frame=false)
 
void LoadWeakValue (Register out, Register in, Label *target_if_cleared)
 
void IncrementCounter (StatsCounter *counter, int value, Register scratch1, Register scratch2)
 
void EmitIncrementCounter (StatsCounter *counter, int value, Register scratch1, Register scratch2)
 
void DecrementCounter (StatsCounter *counter, int value, Register scratch1, Register scratch2)
 
void EmitDecrementCounter (StatsCounter *counter, int value, Register scratch1, Register scratch2)
 
void LoadStackLimit (Register destination, StackLimitKind kind)
 
void StackOverflowCheck (Register num_args, Register scratch1, Register scratch2, Label *stack_overflow)
 
void SmiTst (Register value, Register scratch)
 
void JumpIfNotSmi (Register value, Label *not_smi_label)
 
void AssertConstructor (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertFunction (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertCallableFunction (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertBoundFunction (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertGeneratorObject (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertUnreachable (AbortReason reason) NOOP_UNLESS_DEBUG_CODE
 
void AssertUndefinedOrAllocationSite (Register object, Register scratch) NOOP_UNLESS_DEBUG_CODE
 
void AssertFeedbackCell (Register object, Register scratch) NOOP_UNLESS_DEBUG_CODE
 
void AssertFeedbackVector (Register object, Register scratch) NOOP_UNLESS_DEBUG_CODE
 
void ReplaceClosureCodeWithOptimizedCode (Register optimized_code, Register closure)
 
void GenerateTailCallToReturnedCode (Runtime::FunctionId function_id)
 
void LoadFeedbackVectorFlagsAndJumpIfNeedsProcessing (Register flags, Register feedback_vector, CodeKind current_code_kind, Label *flags_need_processing)
 
void OptimizeCodeOrTailCallOptimizedCodeSlot (Register flags, Register feedback_vector)
 
template<typename Field >
void DecodeField (Register dst, Register src)
 
template<typename Field >
void DecodeField (Register reg)
 
void EnterFrame (StackFrame::Type type)
 
void EnterFrame (StackFrame::Type type, bool load_constant_pool_pointer_reg)
 
void LeaveFrame (StackFrame::Type type)
 
void AllocateStackSpace (Register bytes)
 
void AllocateStackSpace (int bytes)
 
void StubPrologue (StackFrame::Type type)
 
void Prologue ()
 
void InitializeRootRegister ()
 
void jmp (Label *L)
 
void Trap ()
 
void DebugBreak ()
 
void Assert (Condition cc, AbortReason reason, Register rs, Operand rt) NOOP_UNLESS_DEBUG_CODE
 
void AssertJSAny (Register object, Register map_tmp, Register tmp, AbortReason abort_reason) NOOP_UNLESS_DEBUG_CODE
 
void Check (Condition cc, AbortReason reason, Register rs, Operand rt)
 
void SbxCheck (Condition cc, AbortReason reason, Register rj, Operand rk)
 
void Abort (AbortReason msg)
 
void CompareF32 (FPUCondition cc, FPURegister cmp1, FPURegister cmp2)
 
void CompareIsNanF32 (FPURegister cmp1, FPURegister cmp2)
 
void CompareF64 (FPUCondition cc, FPURegister cmp1, FPURegister cmp2)
 
void CompareIsNanF64 (FPURegister cmp1, FPURegister cmp2)
 
void BranchTrueShortF (Label *target, BranchDelaySlot bd=PROTECT)
 
void BranchFalseShortF (Label *target, BranchDelaySlot bd=PROTECT)
 
void BranchTrueF (Label *target, BranchDelaySlot bd=PROTECT)
 
void BranchFalseF (Label *target, BranchDelaySlot bd=PROTECT)
 
void BranchMSA (Label *target, MSABranchDF df, MSABranchCondition cond, MSARegister wt, BranchDelaySlot bd=PROTECT)
 
void CompareWord (Condition cond, Register dst, Register lhs, const Operand &rhs)
 
void BranchLong (int32_t offset, BranchDelaySlot bdslot=PROTECT)
 
void Branch (Label *L, Condition cond, Register rs, RootIndex index, BranchDelaySlot bdslot=PROTECT)
 
void LiLower32BitHelper (Register rd, Operand j)
 
void li_optimized (Register rd, Operand j, LiFlags mode=OPTIMIZE_SIZE)
 
void li (Register rd, Operand j, LiFlags mode=OPTIMIZE_SIZE)
 
void li (Register rd, int64_t j, LiFlags mode=OPTIMIZE_SIZE)
 
void li (Register dst, Handle< HeapObject > value, LiFlags mode=OPTIMIZE_SIZE)
 
void li (Register dst, ExternalReference value, LiFlags mode=OPTIMIZE_SIZE)
 
void LoadFromConstantsTable (Register destination, int constant_index) final
 
void LoadRootRegisterOffset (Register destination, intptr_t offset) final
 
void LoadRootRelative (Register destination, int32_t offset) final
 
void StoreRootRelative (int32_t offset, Register value) final
 
MemOperand ExternalReferenceAsOperand (ExternalReference reference, Register scratch)
 
MemOperand ExternalReferenceAsOperand (IsolateFieldId id)
 
void Move (Register output, MemOperand operand)
 
void Jump (Register target, COND_ARGS)
 
void Jump (intptr_t target, RelocInfo::Mode rmode, COND_ARGS)
 
void Jump (Address target, RelocInfo::Mode rmode, COND_ARGS)
 
void PatchAndJump (Address target)
 
void Jump (Handle< Code > code, RelocInfo::Mode rmode, COND_ARGS)
 
void Jump (const ExternalReference &reference)
 
void Call (Register target, COND_ARGS)
 
void Call (Address target, RelocInfo::Mode rmode, COND_ARGS)
 
void Call (Handle< Code > code, RelocInfo::Mode rmode=RelocInfo::CODE_TARGET, COND_ARGS)
 
void Call (Label *target)
 
void LoadAddress (Register dst, Label *target)
 
void LoadAddressPCRelative (Register dst, Label *target)
 
void LoadEntryFromBuiltinIndex (Register builtin_index, Register target)
 
void LoadEntryFromBuiltin (Builtin builtin, Register destination)
 
MemOperand EntryFromBuiltinAsOperand (Builtin builtin)
 
void CallBuiltinByIndex (Register builtin_index, Register target)
 
void CallBuiltin (Builtin builtin)
 
void TailCallBuiltin (Builtin builtin)
 
void TailCallBuiltin (Builtin builtin, Condition cond, Register type, Operand range)
 
void LoadCodeInstructionStart (Register destination, Register code_data_container_object, CodeEntrypointTag tag)
 
void CallCodeObject (Register code_data_container_object, CodeEntrypointTag tag)
 
void JumpCodeObject (Register code_data_container_object, CodeEntrypointTag tag, JumpMode jump_mode=JumpMode::kJump)
 
void CallJSFunction (Register function_object, uint16_t argument_count)
 
void JumpJSFunction (Register function_object, JumpMode jump_mode=JumpMode::kJump)
 
void StoreReturnAddressAndCall (Register target)
 
void BailoutIfDeoptimized ()
 
void CallForDeoptimization (Builtin target, int deopt_id, Label *exit, DeoptimizeKind kind, Label *ret, Label *jump_deoptimization_entry_label)
 
void Ret (COND_ARGS)
 
void Ret (BranchDelaySlot bd, Condition cond=al, Register rs=zero_reg, const Operand &rt=Operand(zero_reg))
 
void Drop (int count, Condition cond=cc_always, Register reg=no_reg, const Operand &op=Operand(no_reg))
 
void DropArguments (Register count)
 
void DropArgumentsAndPushNewReceiver (Register argc, Register receiver)
 
void DropAndRet (int drop)
 
void DropAndRet (int drop, Condition cond, Register reg, const Operand &op)
 
void Ld (Register rd, const MemOperand &rs)
 
void Sd (Register rd, const MemOperand &rs)
 
void push (Register src)
 
void Push (Register src)
 
void Push (Handle< HeapObject > handle)
 
void Push (Tagged< Smi > smi)
 
void Push (Register src1, Register src2)
 
void Push (Register src1, Register src2, Register src3)
 
void Push (Register src1, Register src2, Register src3, Register src4)
 
void Push (Register src1, Register src2, Register src3, Register src4, Register src5)
 
void Push (Register src, Condition cond, Register tst1, Register tst2)
 
void PushArray (Register array, Register size, Register scratch, Register scratch2, PushArrayOrder order=kNormal)
 
void MaybeSaveRegisters (RegList registers)
 
void MaybeRestoreRegisters (RegList registers)
 
void CallEphemeronKeyBarrier (Register object, Register slot_address, SaveFPRegsMode fp_mode)
 
void CallRecordWriteStubSaveRegisters (Register object, Register slot_address, SaveFPRegsMode fp_mode, StubCallMode mode=StubCallMode::kCallBuiltinPointer)
 
void CallRecordWriteStub (Register object, Register slot_address, SaveFPRegsMode fp_mode, StubCallMode mode=StubCallMode::kCallBuiltinPointer)
 
void MultiPush (RegList regs)
 
void MultiPushFPU (DoubleRegList regs)
 
void MultiPushMSA (DoubleRegList regs)
 
int RequiredStackSizeForCallerSaved (SaveFPRegsMode fp_mode, Register exclusion1=no_reg, Register exclusion2=no_reg, Register exclusion3=no_reg) const
 
int PushCallerSaved (SaveFPRegsMode fp_mode, Register exclusion1=no_reg, Register exclusion2=no_reg, Register exclusion3=no_reg)
 
int PopCallerSaved (SaveFPRegsMode fp_mode, Register exclusion1=no_reg, Register exclusion2=no_reg, Register exclusion3=no_reg)
 
void pop (Register dst)
 
void Pop (Register dst)
 
void Pop (Register src1, Register src2)
 
void Pop (Register src1, Register src2, Register src3)
 
void Pop (uint32_t count=1)
 
void MultiPop (RegList regs)
 
void MultiPopFPU (DoubleRegList regs)
 
void MultiPopMSA (DoubleRegList regs)
 
void SmiTag (Register dst, Register src)
 
void SmiTag (Register reg)
 
void SmiUntag (Register dst, const MemOperand &src)
 
void SmiUntag (Register dst, Register src)
 
void SmiUntag (Register reg)
 
void SmiScale (Register dst, Register src, int scale)
 
void SmiToInt32 (Register smi)
 
void AssertNotSmi (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertSmi (Register object) NOOP_UNLESS_DEBUG_CODE
 
int CalculateStackPassedWords (int num_reg_arguments, int num_double_arguments)
 
void PrepareCallCFunction (int num_reg_arguments, int num_double_registers, Register scratch)
 
void PrepareCallCFunction (int num_reg_arguments, Register scratch)
 
int CallCFunction (ExternalReference function, int num_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, Label *return_location=nullptr)
 
int CallCFunction (Register function, int num_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, Label *return_location=nullptr)
 
int CallCFunction (ExternalReference function, int num_reg_arguments, int num_double_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, Label *return_location=nullptr)
 
int CallCFunction (Register function, int num_reg_arguments, int num_double_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, Label *return_location=nullptr)
 
void MovFromFloatResult (DoubleRegister dst)
 
void MovFromFloatParameter (DoubleRegister dst)
 
void MovToFloatParameter (DoubleRegister src)
 
void MovToFloatParameters (DoubleRegister src1, DoubleRegister src2)
 
void MovToFloatResult (DoubleRegister src)
 
void PrepareCEntryArgs (int num_args)
 
void PrepareCEntryFunction (const ExternalReference &ref)
 
void CheckPageFlag (Register object, Register scratch, int mask, Condition cc, Label *condition_met)
 
void TruncateDoubleToI (Isolate *isolate, Zone *zone, Register result, DoubleRegister double_input, StubCallMode stub_mode)
 
void Movz (Register rd, Register rs, Register rt)
 
void Movn (Register rd, Register rs, Register rt)
 
void Movt (Register rd, Register rs, uint16_t cc=0)
 
void Movf (Register rd, Register rs, uint16_t cc=0)
 
void LoadZeroIfFPUCondition (Register dest)
 
void LoadZeroIfNotFPUCondition (Register dest)
 
void LoadZeroIfConditionNotZero (Register dest, Register condition)
 
void LoadZeroIfConditionZero (Register dest, Register condition)
 
void Clz (Register rd, Register rs)
 
void Dclz (Register rd, Register rs)
 
void Ctz (Register rd, Register rs)
 
void Dctz (Register rd, Register rs)
 
void Popcnt (Register rd, Register rs)
 
void Dpopcnt (Register rd, Register rs)
 
void Ext (Register rt, Register rs, uint16_t pos, uint16_t size)
 
void Dext (Register rt, Register rs, uint16_t pos, uint16_t size)
 
void Ins (Register rt, Register rs, uint16_t pos, uint16_t size)
 
void Dins (Register rt, Register rs, uint16_t pos, uint16_t size)
 
void ExtractBits (Register dest, Register source, Register pos, int size, bool sign_extend=false)
 
void InsertBits (Register dest, Register source, Register pos, int size)
 
void Neg_s (FPURegister fd, FPURegister fs)
 
void Neg_d (FPURegister fd, FPURegister fs)
 
void Bovc (Register rt, Register rs, Label *L)
 
void Bnvc (Register rt, Register rs, Label *L)
 
void Trunc_uw_s (FPURegister fd, FPURegister fs, FPURegister scratch)
 
void Trunc_uw_s (Register rd, FPURegister fs, FPURegister scratch)
 
void ByteSwapSigned (Register dest, Register src, int operand_size)
 
void ByteSwapUnsigned (Register dest, Register src, int operand_size)
 
void Ulh (Register rd, const MemOperand &rs)
 
void Ulhu (Register rd, const MemOperand &rs)
 
void Ush (Register rd, const MemOperand &rs, Register scratch)
 
void Ulw (Register rd, const MemOperand &rs)
 
void Ulwu (Register rd, const MemOperand &rs)
 
void Usw (Register rd, const MemOperand &rs)
 
void Uld (Register rd, const MemOperand &rs)
 
void Usd (Register rd, const MemOperand &rs)
 
void Ulwc1 (FPURegister fd, const MemOperand &rs, Register scratch)
 
void Uswc1 (FPURegister fd, const MemOperand &rs, Register scratch)
 
void Uldc1 (FPURegister fd, const MemOperand &rs, Register scratch)
 
void Usdc1 (FPURegister fd, const MemOperand &rs, Register scratch)
 
void Lb (Register rd, const MemOperand &rs)
 
void Lbu (Register rd, const MemOperand &rs)
 
void Sb (Register rd, const MemOperand &rs)
 
void Lh (Register rd, const MemOperand &rs)
 
void Lhu (Register rd, const MemOperand &rs)
 
void Sh (Register rd, const MemOperand &rs)
 
void Lw (Register rd, const MemOperand &rs)
 
void Lwu (Register rd, const MemOperand &rs)
 
void Sw (Register rd, const MemOperand &rs)
 
void Lwc1 (FPURegister fd, const MemOperand &src)
 
void Swc1 (FPURegister fs, const MemOperand &dst)
 
void Ldc1 (FPURegister fd, const MemOperand &src)
 
void Sdc1 (FPURegister fs, const MemOperand &dst)
 
void Ll (Register rd, const MemOperand &rs)
 
void Sc (Register rd, const MemOperand &rs)
 
void Lld (Register rd, const MemOperand &rs)
 
void Scd (Register rd, const MemOperand &rs)
 
void Float32Max (FPURegister dst, FPURegister src1, FPURegister src2, Label *out_of_line)
 
void Float32Min (FPURegister dst, FPURegister src1, FPURegister src2, Label *out_of_line)
 
void Float64Max (FPURegister dst, FPURegister src1, FPURegister src2, Label *out_of_line)
 
void Float64Min (FPURegister dst, FPURegister src1, FPURegister src2, Label *out_of_line)
 
void Float32MaxOutOfLine (FPURegister dst, FPURegister src1, FPURegister src2)
 
void Float32MinOutOfLine (FPURegister dst, FPURegister src1, FPURegister src2)
 
void Float64MaxOutOfLine (FPURegister dst, FPURegister src1, FPURegister src2)
 
void Float64MinOutOfLine (FPURegister dst, FPURegister src1, FPURegister src2)
 
bool IsDoubleZeroRegSet ()
 
void LoadIsolateField (Register dst, IsolateFieldId id)
 
void mov (Register rd, Register rt)
 
void Move (Register dst, Handle< HeapObject > handle)
 
void Move (Register dst, Tagged< Smi > value)
 
void Move (Register dst, Register src)
 
void Move (FPURegister dst, FPURegister src)
 
void Move (Register dst_low, Register dst_high, FPURegister src)
 
void Move (Register dst, FPURegister src)
 
void Move (FPURegister dst, Register src)
 
void FmoveHigh (Register dst_high, FPURegister src)
 
void FmoveHigh (FPURegister dst, Register src_high)
 
void FmoveLow (Register dst_low, FPURegister src)
 
void FmoveLow (FPURegister dst, Register src_low)
 
void Move (FPURegister dst, Register src_low, Register src_high)
 
void Move_d (FPURegister dst, FPURegister src)
 
void Move_s (FPURegister dst, FPURegister src)
 
void Move (FPURegister dst, float imm)
 
void Move (FPURegister dst, double imm)
 
void Move (FPURegister dst, uint32_t src)
 
void Move (FPURegister dst, uint64_t src)
 
void DaddOverflow (Register dst, Register left, const Operand &right, Register overflow)
 
void DsubOverflow (Register dst, Register left, const Operand &right, Register overflow)
 
void MulOverflow (Register dst, Register left, const Operand &right, Register overflow)
 
void DMulOverflow (Register dst, Register left, const Operand &right, Register overflow)
 
template<typename Func >
void GenerateSwitchTable (Register index, size_t case_count, Func GetLabelFunction)
 
void LoadRoot (Register destination, RootIndex index) final
 
void LoadRoot (Register destination, RootIndex index, Condition cond, Register src1, const Operand &src2)
 
void LoadMap (Register destination, Register object)
 
void LoadFeedbackVector (Register dst, Register closure, Register scratch, Label *fbv_undef)
 
void FPUCanonicalizeNaN (const DoubleRegister dst, const DoubleRegister src)
 
void Cvt_d_uw (FPURegister fd, FPURegister fs)
 
void Cvt_d_uw (FPURegister fd, Register rs)
 
void Cvt_d_ul (FPURegister fd, FPURegister fs)
 
void Cvt_d_ul (FPURegister fd, Register rs)
 
void Cvt_s_uw (FPURegister fd, FPURegister fs)
 
void Cvt_s_uw (FPURegister fd, Register rs)
 
void Cvt_s_ul (FPURegister fd, FPURegister fs)
 
void Cvt_s_ul (FPURegister fd, Register rs)
 
void Trunc_uw_d (FPURegister fd, FPURegister fs, FPURegister scratch)
 
void Trunc_uw_d (Register rd, FPURegister fs, FPURegister scratch)
 
void Trunc_ul_d (FPURegister fd, FPURegister fs, FPURegister scratch, Register result=no_reg)
 
void Trunc_ul_d (Register rd, FPURegister fs, FPURegister scratch, Register result=no_reg)
 
void Trunc_ul_s (FPURegister fd, FPURegister fs, FPURegister scratch, Register result=no_reg)
 
void Trunc_ul_s (Register rd, FPURegister fs, FPURegister scratch, Register result=no_reg)
 
void Trunc_d_d (FPURegister fd, FPURegister fs)
 
void Round_d_d (FPURegister fd, FPURegister fs)
 
void Floor_d_d (FPURegister fd, FPURegister fs)
 
void Ceil_d_d (FPURegister fd, FPURegister fs)
 
void Trunc_s_s (FPURegister fd, FPURegister fs)
 
void Round_s_s (FPURegister fd, FPURegister fs)
 
void Floor_s_s (FPURegister fd, FPURegister fs)
 
void Ceil_s_s (FPURegister fd, FPURegister fs)
 
void LoadLane (MSASize sz, MSARegister dst, uint8_t laneidx, MemOperand src)
 
void StoreLane (MSASize sz, MSARegister src, uint8_t laneidx, MemOperand dst)
 
void ExtMulLow (MSADataType type, MSARegister dst, MSARegister src1, MSARegister src2)
 
void ExtMulHigh (MSADataType type, MSARegister dst, MSARegister src1, MSARegister src2)
 
void LoadSplat (MSASize sz, MSARegister dst, MemOperand src)
 
void ExtAddPairwise (MSADataType type, MSARegister dst, MSARegister src)
 
void MSARoundW (MSARegister dst, MSARegister src, FPURoundingMode mode)
 
void MSARoundD (MSARegister dst, MSARegister src, FPURoundingMode mode)
 
void JumpIfSmi (Register value, Label *smi_label, BranchDelaySlot bd=PROTECT)
 
void JumpIfEqual (Register a, int32_t b, Label *dest)
 
void JumpIfLessThan (Register a, int32_t b, Label *dest)
 
void PushStandardFrame (Register function_reg)
 
void Lsa (Register rd, Register rs, Register rt, uint8_t sa, Register scratch=at)
 
void Dlsa (Register rd, Register rs, Register rt, uint8_t sa, Register scratch=at)
 
void ComputeCodeStartAddress (Register dst)
 
void CodeEntry ()
 
void ExceptionHandler ()
 
void BindExceptionHandler (Label *label)
 
void LoadReceiver (Register dest)
 
void StoreReceiver (Register rec)
 
bool IsNear (Label *L, Condition cond, int rs_reg)
 
void Swap (Register reg1, Register reg2, Register scratch=no_reg)
 
void TestCodeIsMarkedForDeoptimizationAndJump (Register code_data_container, Register scratch, Condition cond, Label *target)
 
Operand ClearedValue () const
 
void PushRoot (RootIndex index)
 
void JumpIfRoot (Register with, RootIndex index, Label *if_equal)
 
void JumpIfNotRoot (Register with, RootIndex index, Label *if_not_equal)
 
void JumpIfIsInRange (Register value, unsigned lower_limit, unsigned higher_limit, Label *on_in_range)
 
void RecordWriteField (Register object, int offset, Register value, Register scratch, RAStatus ra_status, SaveFPRegsMode save_fp, SmiCheck smi_check=SmiCheck::kInline)
 
void RecordWrite (Register object, Register address, Register value, RAStatus ra_status, SaveFPRegsMode save_fp, SmiCheck smi_check=SmiCheck::kInline)
 
void Pref (int32_t hint, const MemOperand &rs)
 
void LoadWordPair (Register rd, const MemOperand &rs, Register scratch=at)
 
void StoreWordPair (Register rd, const MemOperand &rs, Register scratch=at)
 
void Trunc_l_ud (FPURegister fd, FPURegister fs, FPURegister scratch)
 
void Trunc_l_d (FPURegister fd, FPURegister fs)
 
void Round_l_d (FPURegister fd, FPURegister fs)
 
void Floor_l_d (FPURegister fd, FPURegister fs)
 
void Ceil_l_d (FPURegister fd, FPURegister fs)
 
void Trunc_w_d (FPURegister fd, FPURegister fs)
 
void Round_w_d (FPURegister fd, FPURegister fs)
 
void Floor_w_d (FPURegister fd, FPURegister fs)
 
void Ceil_w_d (FPURegister fd, FPURegister fs)
 
void Madd_s (FPURegister fd, FPURegister fr, FPURegister fs, FPURegister ft, FPURegister scratch)
 
void Madd_d (FPURegister fd, FPURegister fr, FPURegister fs, FPURegister ft, FPURegister scratch)
 
void Msub_s (FPURegister fd, FPURegister fr, FPURegister fs, FPURegister ft, FPURegister scratch)
 
void Msub_d (FPURegister fd, FPURegister fr, FPURegister fs, FPURegister ft, FPURegister scratch)
 
void EnterExitFrame (Register scratch, int stack_space, StackFrame::Type frame_type)
 
void LeaveExitFrame (Register scratch)
 
void AssertStackIsAligned () NOOP_UNLESS_DEBUG_CODE
 
void LoadGlobalProxy (Register dst)
 
void LoadNativeContextSlot (Register dst, int index)
 
void LoadGlobalFunctionInitialMap (Register function, Register map, Register scratch)
 
void CheckDebugHook (Register fun, Register new_target, Register expected_parameter_count_or_dispatch_handle, Register actual_parameter_count)
 
void InvokeFunction (Register function, Register expected_parameter_count, Register actual_parameter_count, InvokeType type)
 
void InvokeFunctionWithNewTarget (Register function, Register new_target, Register actual_parameter_count, InvokeType type)
 
void InvokeFunctionCode (Register function, Register new_target, Register expected_parameter_count, Register actual_parameter_count, InvokeType type)
 
void PushStackHandler ()
 
void PopStackHandler ()
 
void GetObjectType (Register function, Register map, Register type_reg)
 
void GetInstanceTypeRange (Register map, Register type_reg, InstanceType lower_limit, Register range)
 
void CallRuntime (const Runtime::Function *f, int num_arguments)
 
void CallRuntime (Runtime::FunctionId fid)
 
void CallRuntime (Runtime::FunctionId fid, int num_arguments)
 
void TailCallRuntime (Runtime::FunctionId fid)
 
void JumpToExternalReference (const ExternalReference &builtin, bool builtin_exit_frame=false)
 
void LoadWeakValue (Register out, Register in, Label *target_if_cleared)
 
void IncrementCounter (StatsCounter *counter, int value, Register scratch1, Register scratch2)
 
void EmitIncrementCounter (StatsCounter *counter, int value, Register scratch1, Register scratch2)
 
void DecrementCounter (StatsCounter *counter, int value, Register scratch1, Register scratch2)
 
void EmitDecrementCounter (StatsCounter *counter, int value, Register scratch1, Register scratch2)
 
void LoadStackLimit (Register destination, StackLimitKind kind)
 
void StackOverflowCheck (Register num_args, Register scratch1, Register scratch2, Label *stack_overflow)
 
void SmiTst (Register value, Register scratch)
 
void JumpIfNotSmi (Register value, Label *not_smi_label, BranchDelaySlot bd=PROTECT)
 
void AssertConstructor (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertFunction (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertCallableFunction (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertBoundFunction (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertGeneratorObject (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertUndefinedOrAllocationSite (Register object, Register scratch) NOOP_UNLESS_DEBUG_CODE
 
void AssertFeedbackCell (Register object, Register scratch) NOOP_UNLESS_DEBUG_CODE
 
void AssertFeedbackVector (Register object, Register scratch) NOOP_UNLESS_DEBUG_CODE
 
void ReplaceClosureCodeWithOptimizedCode (Register optimized_code, Register closure, Register scratch1, Register scratch2)
 
void GenerateTailCallToReturnedCode (Runtime::FunctionId function_id)
 
void LoadFeedbackVectorFlagsAndJumpIfNeedsProcessing (Register flags, Register feedback_vector, CodeKind current_code_kind, Label *flags_need_processing)
 
void OptimizeCodeOrTailCallOptimizedCodeSlot (Register flags, Register feedback_vector)
 
template<typename Field >
void DecodeField (Register dst, Register src)
 
template<typename Field >
void DecodeField (Register reg)
 
void CallBuiltin (Builtin builtin, Condition cond=al)
 
void TailCallBuiltin (Builtin builtin, Condition cond=al, CRegister cr=cr0)
 
void Popcnt32 (Register dst, Register src)
 
void Popcnt64 (Register dst, Register src)
 
void ConvertIntToDouble (Register src, DoubleRegister dst)
 
void ConvertUnsignedIntToDouble (Register src, DoubleRegister dst)
 
void ConvertIntToFloat (Register src, DoubleRegister dst)
 
void ConvertUnsignedIntToFloat (Register src, DoubleRegister dst)
 
void ConvertInt64ToFloat (Register src, DoubleRegister double_dst)
 
void ConvertInt64ToDouble (Register src, DoubleRegister double_dst)
 
void ConvertUnsignedInt64ToFloat (Register src, DoubleRegister double_dst)
 
void ConvertUnsignedInt64ToDouble (Register src, DoubleRegister double_dst)
 
void ConvertDoubleToInt64 (const DoubleRegister double_input, const Register dst, const DoubleRegister double_dst, FPRoundingMode rounding_mode=kRoundToZero)
 
void ConvertDoubleToUnsignedInt64 (const DoubleRegister double_input, const Register dst, const DoubleRegister double_dst, FPRoundingMode rounding_mode=kRoundToZero)
 
void EnterFrame (StackFrame::Type type, bool load_constant_pool_pointer_reg=false)
 
int LeaveFrame (StackFrame::Type type, int stack_adjustment=0)
 
void AllocateStackSpace (int bytes)
 
void AllocateStackSpace (Register bytes)
 
void PushCommonFrame (Register marker_reg=no_reg)
 
void StubPrologue (StackFrame::Type type)
 
void Prologue ()
 
void DropArguments (Register count)
 
void DropArgumentsAndPushNewReceiver (Register argc, Register receiver)
 
void PushStandardFrame (Register function_reg)
 
void RestoreFrameStateForTailCall ()
 
void InitializeRootRegister ()
 
void LoadDoubleLiteral (DoubleRegister result, base::Double value, Register scratch)
 
void LoadIntLiteral (Register dst, int value)
 
void LoadSmiLiteral (Register dst, Tagged< Smi > smi)
 
void LoadPC (Register dst)
 
void ComputeCodeStartAddress (Register dst)
 
void CmpS64 (Register src1, const Operand &src2, Register scratch, CRegister cr=cr0)
 
void CmpS64 (Register src1, Register src2, CRegister cr=cr0)
 
void CmpU64 (Register src1, const Operand &src2, Register scratch, CRegister cr=cr0)
 
void CmpU64 (Register src1, Register src2, CRegister cr=cr0)
 
void CmpS32 (Register src1, const Operand &src2, Register scratch, CRegister cr=cr0)
 
void CmpS32 (Register src1, Register src2, CRegister cr=cr0)
 
void CmpU32 (Register src1, const Operand &src2, Register scratch, CRegister cr=cr0)
 
void CmpU32 (Register src1, Register src2, CRegister cr=cr0)
 
void CompareTagged (Register src1, Register src2, CRegister cr=cr0)
 
void MinF64 (DoubleRegister dst, DoubleRegister lhs, DoubleRegister rhs, DoubleRegister scratch=kScratchDoubleReg)
 
void MaxF64 (DoubleRegister dst, DoubleRegister lhs, DoubleRegister rhs, DoubleRegister scratch=kScratchDoubleReg)
 
void SetRoundingMode (FPRoundingMode RN)
 
void ResetRoundingMode ()
 
void AddS64 (Register dst, Register src, const Operand &value, Register scratch=r0, OEBit s=LeaveOE, RCBit r=LeaveRC)
 
void AddS64 (Register dst, Register src, Register value, OEBit s=LeaveOE, RCBit r=LeaveRC)
 
void SubS64 (Register dst, Register src, const Operand &value, Register scratch=r0, OEBit s=LeaveOE, RCBit r=LeaveRC)
 
void SubS64 (Register dst, Register src, Register value, OEBit s=LeaveOE, RCBit r=LeaveRC)
 
void AddS32 (Register dst, Register src, const Operand &value, Register scratch=r0, RCBit r=LeaveRC)
 
void AddS32 (Register dst, Register src, Register value, RCBit r=LeaveRC)
 
void SubS32 (Register dst, Register src, const Operand &value, Register scratch=r0, RCBit r=LeaveRC)
 
void SubS32 (Register dst, Register src, Register value, RCBit r=LeaveRC)
 
void MulS64 (Register dst, Register src, const Operand &value, Register scratch=r0, OEBit s=LeaveOE, RCBit r=LeaveRC)
 
void MulS64 (Register dst, Register src, Register value, OEBit s=LeaveOE, RCBit r=LeaveRC)
 
void MulS32 (Register dst, Register src, const Operand &value, Register scratch=r0, OEBit s=LeaveOE, RCBit r=LeaveRC)
 
void MulS32 (Register dst, Register src, Register value, OEBit s=LeaveOE, RCBit r=LeaveRC)
 
void DivS64 (Register dst, Register src, Register value, OEBit s=LeaveOE, RCBit r=LeaveRC)
 
void DivU64 (Register dst, Register src, Register value, OEBit s=LeaveOE, RCBit r=LeaveRC)
 
void DivS32 (Register dst, Register src, Register value, OEBit s=LeaveOE, RCBit r=LeaveRC)
 
void DivU32 (Register dst, Register src, Register value, OEBit s=LeaveOE, RCBit r=LeaveRC)
 
void ModS64 (Register dst, Register src, Register value)
 
void ModU64 (Register dst, Register src, Register value)
 
void ModS32 (Register dst, Register src, Register value)
 
void ModU32 (Register dst, Register src, Register value)
 
void AndU64 (Register dst, Register src, const Operand &value, Register scratch=r0, RCBit r=SetRC)
 
void AndU64 (Register dst, Register src, Register value, RCBit r=SetRC)
 
void OrU64 (Register dst, Register src, const Operand &value, Register scratch=r0, RCBit r=SetRC)
 
void OrU64 (Register dst, Register src, Register value, RCBit r=LeaveRC)
 
void XorU64 (Register dst, Register src, const Operand &value, Register scratch=r0, RCBit r=SetRC)
 
void XorU64 (Register dst, Register src, Register value, RCBit r=LeaveRC)
 
void AndU32 (Register dst, Register src, const Operand &value, Register scratch=r0, RCBit r=SetRC)
 
void AndU32 (Register dst, Register src, Register value, RCBit r=SetRC)
 
void OrU32 (Register dst, Register src, const Operand &value, Register scratch=r0, RCBit r=SetRC)
 
void OrU32 (Register dst, Register src, Register value, RCBit r=LeaveRC)
 
void XorU32 (Register dst, Register src, const Operand &value, Register scratch=r0, RCBit r=SetRC)
 
void XorU32 (Register dst, Register src, Register value, RCBit r=LeaveRC)
 
void ShiftLeftU64 (Register dst, Register src, const Operand &value, RCBit r=LeaveRC)
 
void ShiftRightU64 (Register dst, Register src, const Operand &value, RCBit r=LeaveRC)
 
void ShiftRightS64 (Register dst, Register src, const Operand &value, RCBit r=LeaveRC)
 
void ShiftLeftU32 (Register dst, Register src, const Operand &value, RCBit r=LeaveRC)
 
void ShiftRightU32 (Register dst, Register src, const Operand &value, RCBit r=LeaveRC)
 
void ShiftRightS32 (Register dst, Register src, const Operand &value, RCBit r=LeaveRC)
 
void ShiftLeftU64 (Register dst, Register src, Register value, RCBit r=LeaveRC)
 
void ShiftRightU64 (Register dst, Register src, Register value, RCBit r=LeaveRC)
 
void ShiftRightS64 (Register dst, Register src, Register value, RCBit r=LeaveRC)
 
void ShiftLeftU32 (Register dst, Register src, Register value, RCBit r=LeaveRC)
 
void ShiftRightU32 (Register dst, Register src, Register value, RCBit r=LeaveRC)
 
void ShiftRightS32 (Register dst, Register src, Register value, RCBit r=LeaveRC)
 
void CountLeadingZerosU32 (Register dst, Register src, RCBit r=LeaveRC)
 
void CountLeadingZerosU64 (Register dst, Register src, RCBit r=LeaveRC)
 
void CountTrailingZerosU32 (Register dst, Register src, Register scratch1=ip, Register scratch2=r0, RCBit r=LeaveRC)
 
void CountTrailingZerosU64 (Register dst, Register src, Register scratch1=ip, Register scratch2=r0, RCBit r=LeaveRC)
 
void ClearByteU64 (Register dst, int byte_idx)
 
void ReverseBitsU64 (Register dst, Register src, Register scratch1, Register scratch2)
 
void ReverseBitsU32 (Register dst, Register src, Register scratch1, Register scratch2)
 
void ReverseBitsInSingleByteU64 (Register dst, Register src, Register scratch1, Register scratch2, int byte_idx)
 
void AddF64 (DoubleRegister dst, DoubleRegister lhs, DoubleRegister rhs, RCBit r=LeaveRC)
 
void SubF64 (DoubleRegister dst, DoubleRegister lhs, DoubleRegister rhs, RCBit r=LeaveRC)
 
void MulF64 (DoubleRegister dst, DoubleRegister lhs, DoubleRegister rhs, RCBit r=LeaveRC)
 
void DivF64 (DoubleRegister dst, DoubleRegister lhs, DoubleRegister rhs, RCBit r=LeaveRC)
 
void AddF32 (DoubleRegister dst, DoubleRegister lhs, DoubleRegister rhs, RCBit r=LeaveRC)
 
void SubF32 (DoubleRegister dst, DoubleRegister lhs, DoubleRegister rhs, RCBit r=LeaveRC)
 
void MulF32 (DoubleRegister dst, DoubleRegister lhs, DoubleRegister rhs, RCBit r=LeaveRC)
 
void DivF32 (DoubleRegister dst, DoubleRegister lhs, DoubleRegister rhs, RCBit r=LeaveRC)
 
void CopySignF64 (DoubleRegister dst, DoubleRegister lhs, DoubleRegister rhs, RCBit r=LeaveRC)
 
template<class _type >
void SignedExtend (Register dst, Register value)
 
template<class _type >
void ZeroExtend (Register dst, Register value)
 
template<class _type >
void ExtendValue (Register dst, Register value)
 
template<class _type >
void LoadReserve (Register output, MemOperand dst)
 
template<class _type >
void StoreConditional (Register value, MemOperand dst)
 
template<class _type >
void AtomicCompareExchange (MemOperand dst, Register old_value, Register new_value, Register output, Register scratch)
 
template<class _type >
void AtomicExchange (MemOperand dst, Register new_value, Register output)
 
template<class _type , class bin_op >
void AtomicOps (MemOperand dst, Register value, Register output, Register result, bin_op op)
 
void Push (Register src)
 
void Push (Handle< HeapObject > handle)
 
void Push (Tagged< Smi > smi)
 
void Push (Register src1, Register src2)
 
void Push (Register src1, Register src2, Register src3)
 
void Push (Register src1, Register src2, Register src3, Register src4)
 
void Push (Register src1, Register src2, Register src3, Register src4, Register src5)
 
void PushArray (Register array, Register size, Register scratch, Register scratch2, PushArrayOrder order=kNormal)
 
void Pop (Register dst)
 
void Pop (Register src1, Register src2)
 
void Pop (Register src1, Register src2, Register src3)
 
void Pop (Register src1, Register src2, Register src3, Register src4)
 
void Pop (Register src1, Register src2, Register src3, Register src4, Register src5)
 
void MaybeSaveRegisters (RegList registers)
 
void MaybeRestoreRegisters (RegList registers)
 
void CallEphemeronKeyBarrier (Register object, Register slot_address, SaveFPRegsMode fp_mode)
 
void CallIndirectPointerBarrier (Register object, Register slot_address, SaveFPRegsMode fp_mode, IndirectPointerTag tag)
 
void CallRecordWriteStubSaveRegisters (Register object, Register slot_address, SaveFPRegsMode fp_mode, StubCallMode mode=StubCallMode::kCallBuiltinPointer)
 
void CallRecordWriteStub (Register object, Register slot_address, SaveFPRegsMode fp_mode, StubCallMode mode=StubCallMode::kCallBuiltinPointer)
 
void MultiPush (RegList regs, Register location=sp)
 
void MultiPop (RegList regs, Register location=sp)
 
void MultiPushDoubles (DoubleRegList dregs, Register location=sp)
 
void MultiPopDoubles (DoubleRegList dregs, Register location=sp)
 
void MultiPushV128 (Simd128RegList dregs, Register scratch, Register location=sp)
 
void MultiPopV128 (Simd128RegList dregs, Register scratch, Register location=sp)
 
void MultiPushF64AndV128 (DoubleRegList dregs, Simd128RegList simd_regs, Register scratch1, Register scratch2, Register location=sp)
 
void MultiPopF64AndV128 (DoubleRegList dregs, Simd128RegList simd_regs, Register scratch1, Register scratch2, Register location=sp)
 
int RequiredStackSizeForCallerSaved (SaveFPRegsMode fp_mode, Register exclusion1=no_reg, Register exclusion2=no_reg, Register exclusion3=no_reg) const
 
int PushCallerSaved (SaveFPRegsMode fp_mode, Register scratch1, Register scratch2, Register exclusion1=no_reg, Register exclusion2=no_reg, Register exclusion3=no_reg)
 
int PopCallerSaved (SaveFPRegsMode fp_mode, Register scratch1, Register scratch2, Register exclusion1=no_reg, Register exclusion2=no_reg, Register exclusion3=no_reg)
 
void LoadRoot (Register destination, RootIndex index) final
 
void LoadRoot (Register destination, RootIndex index, Condition cond)
 
void LoadTaggedRoot (Register destination, RootIndex index)
 
void SwapP (Register src, Register dst, Register scratch)
 
void SwapP (Register src, MemOperand dst, Register scratch)
 
void SwapP (MemOperand src, MemOperand dst, Register scratch_0, Register scratch_1)
 
void SwapFloat32 (DoubleRegister src, DoubleRegister dst, DoubleRegister scratch)
 
void SwapFloat32 (DoubleRegister src, MemOperand dst, DoubleRegister scratch)
 
void SwapFloat32 (MemOperand src, MemOperand dst, DoubleRegister scratch_0, DoubleRegister scratch_1)
 
void SwapDouble (DoubleRegister src, DoubleRegister dst, DoubleRegister scratch)
 
void SwapDouble (DoubleRegister src, MemOperand dst, DoubleRegister scratch)
 
void SwapDouble (MemOperand src, MemOperand dst, DoubleRegister scratch_0, DoubleRegister scratch_1)
 
void SwapSimd128 (Simd128Register src, Simd128Register dst, Simd128Register scratch)
 
void SwapSimd128 (Simd128Register src, MemOperand dst, Simd128Register scratch1, Register scratch2)
 
void SwapSimd128 (MemOperand src, MemOperand dst, Simd128Register scratch1, Simd128Register scratch2, Register scratch3)
 
void ByteReverseU16 (Register dst, Register val, Register scratch)
 
void ByteReverseU32 (Register dst, Register val, Register scratch)
 
void ByteReverseU64 (Register dst, Register val, Register=r0)
 
void PrepareCallCFunction (int num_reg_arguments, int num_double_registers, Register scratch)
 
void PrepareCallCFunction (int num_reg_arguments, Register scratch)
 
void MovToFloatParameter (DoubleRegister src)
 
void MovToFloatParameters (DoubleRegister src1, DoubleRegister src2)
 
void MovToFloatResult (DoubleRegister src)
 
int CallCFunction (ExternalReference function, int num_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, bool has_function_descriptor=true)
 
int CallCFunction (Register function, int num_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, bool has_function_descriptor=true)
 
int CallCFunction (ExternalReference function, int num_reg_arguments, int num_double_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, bool has_function_descriptor=true)
 
int CallCFunction (Register function, int num_reg_arguments, int num_double_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, bool has_function_descriptor=true)
 
void MovFromFloatParameter (DoubleRegister dst)
 
void MovFromFloatResult (DoubleRegister dst)
 
void Trap ()
 
void DebugBreak ()
 
void Assert (Condition cond, AbortReason reason, CRegister cr=cr0) NOOP_UNLESS_DEBUG_CODE
 
void Check (Condition cond, AbortReason reason, CRegister cr=cr0)
 
void Abort (AbortReason reason)
 
void LoadFromConstantsTable (Register destination, int constant_index) final
 
void LoadRootRegisterOffset (Register destination, intptr_t offset) final
 
void LoadRootRelative (Register destination, int32_t offset) final
 
void StoreRootRelative (int32_t offset, Register value) final
 
MemOperand ExternalReferenceAsOperand (ExternalReference reference, Register scratch)
 
MemOperand ExternalReferenceAsOperand (IsolateFieldId id)
 
void Jump (Register target)
 
void Jump (Address target, RelocInfo::Mode rmode, Condition cond=al, CRegister cr=cr0)
 
void Jump (Handle< Code > code, RelocInfo::Mode rmode, Condition cond=al, CRegister cr=cr0)
 
void Jump (const ExternalReference &reference)
 
void Jump (intptr_t target, RelocInfo::Mode rmode, Condition cond=al, CRegister cr=cr0)
 
void Call (Register target)
 
void Call (Address target, RelocInfo::Mode rmode, Condition cond=al)
 
void Call (Handle< Code > code, RelocInfo::Mode rmode=RelocInfo::CODE_TARGET, Condition cond=al)
 
void Call (Label *target)
 
void GetLabelAddress (Register dst, Label *target)
 
void LoadEntryFromBuiltinIndex (Register builtin_index, Register target)
 
void LoadEntryFromBuiltin (Builtin builtin, Register destination)
 
MemOperand EntryFromBuiltinAsOperand (Builtin builtin)
 
void LoadCodeInstructionStart (Register destination, Register code_object, CodeEntrypointTag tag=kDefaultCodeEntrypointTag)
 
void CallCodeObject (Register code_object)
 
void JumpCodeObject (Register code_object, JumpMode jump_mode=JumpMode::kJump)
 
void CallBuiltinByIndex (Register builtin_index, Register target)
 
void BailoutIfDeoptimized ()
 
void CallForDeoptimization (Builtin target, int deopt_id, Label *exit, DeoptimizeKind kind, Label *ret, Label *jump_deoptimization_entry_label)
 
void Drop (int count)
 
void Drop (Register count, Register scratch=r0)
 
void Ret ()
 
void Ret (Condition cond, CRegister cr=cr0)
 
void Ret (int drop)
 
void CanonicalizeNaN (const DoubleRegister dst, const DoubleRegister src)
 
void CanonicalizeNaN (const DoubleRegister value)
 
void CheckPageFlag (Register object, Register scratch, int mask, Condition cc, Label *condition_met)
 
void MovIntToDouble (DoubleRegister dst, Register src, Register scratch)
 
void MovUnsignedIntToDouble (DoubleRegister dst, Register src, Register scratch)
 
void MovInt64ToDouble (DoubleRegister dst, Register src)
 
void MovInt64ComponentsToDouble (DoubleRegister dst, Register src_hi, Register src_lo, Register scratch)
 
void InsertDoubleLow (DoubleRegister dst, Register src, Register scratch)
 
void InsertDoubleHigh (DoubleRegister dst, Register src, Register scratch)
 
void MovDoubleLowToInt (Register dst, DoubleRegister src)
 
void MovDoubleHighToInt (Register dst, DoubleRegister src)
 
void MovDoubleToInt64 (Register dst, DoubleRegister src)
 
void MovIntToFloat (DoubleRegister dst, Register src, Register scratch)
 
void MovFloatToInt (Register dst, DoubleRegister src, DoubleRegister scratch)
 
void Move (Register dst, Tagged< Smi > smi)
 
void Move (Register dst, Handle< HeapObject > value, RelocInfo::Mode rmode=RelocInfo::FULL_EMBEDDED_OBJECT)
 
void Move (Register dst, ExternalReference reference)
 
void LoadIsolateField (Register dst, IsolateFieldId id)
 
void Move (Register dst, Register src, Condition cond=al)
 
void Move (DoubleRegister dst, DoubleRegister src)
 
void Move (Register dst, const MemOperand &src)
 
void SmiUntag (Register dst, const MemOperand &src, RCBit rc=LeaveRC, Register scratch=no_reg)
 
void SmiUntag (Register reg, RCBit rc=LeaveRC)
 
void SmiUntag (Register dst, Register src, RCBit rc=LeaveRC)
 
void SmiToInt32 (Register smi)
 
void SmiTag (Register reg, RCBit rc=LeaveRC)
 
void SmiTag (Register dst, Register src, RCBit rc=LeaveRC)
 
void AssertNotSmi (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertSmi (Register object) NOOP_UNLESS_DEBUG_CODE
 
void ZeroExtByte (Register dst, Register src)
 
void ZeroExtHalfWord (Register dst, Register src)
 
void ZeroExtWord32 (Register dst, Register src)
 
void ExtractBitRange (Register dst, Register src, int rangeStart, int rangeEnd, RCBit rc=LeaveRC, bool test=false)
 
void ExtractBit (Register dst, Register src, uint32_t bitNumber, RCBit rc=LeaveRC, bool test=false)
 
void ExtractBitMask (Register dst, Register src, uintptr_t mask, RCBit rc=LeaveRC, bool test=false)
 
void TestBit (Register value, int bitNumber, Register scratch=r0)
 
void TestBitMask (Register value, uintptr_t mask, Register scratch=r0)
 
void TestBitRange (Register value, int rangeStart, int rangeEnd, Register scratch=r0)
 
void TestIfSmi (Register value, Register scratch)
 
void JumpIfSmi (Register value, Label *smi_label)
 
void JumpIfEqual (Register x, int32_t y, Label *dest)
 
void JumpIfLessThan (Register x, int32_t y, Label *dest)
 
void LoadMap (Register destination, Register object)
 
void LoadCompressedMap (Register dst, Register object, Register scratch)
 
void LoadFeedbackVector (Register dst, Register closure, Register scratch, Label *fbv_undef)
 
void TestIfInt32 (Register value, Register scratch, CRegister cr=cr0)
 
void AddAndCheckForOverflow (Register dst, Register left, Register right, Register overflow_dst, Register scratch=r0)
 
void AddAndCheckForOverflow (Register dst, Register left, intptr_t right, Register overflow_dst, Register scratch=r0)
 
void SubAndCheckForOverflow (Register dst, Register left, Register right, Register overflow_dst, Register scratch=r0)
 
void TryInlineTruncateDoubleToI (Register result, DoubleRegister input, Label *done)
 
void TruncateDoubleToI (Isolate *isolate, Zone *zone, Register result, DoubleRegister double_input, StubCallMode stub_mode)
 
void LoadConstantPoolPointerRegister ()
 
void LoadConstantPoolPointerRegisterFromCodeTargetAddress (Register code_target_address, Register scratch1, Register scratch2)
 
void AbortConstantPoolBuilding ()
 
void CallJSFunction (Register function_object, uint16_t argument_count, Register scratch)
 
void JumpJSFunction (Register function_object, Register scratch, JumpMode jump_mode=JumpMode::kJump)
 
void StoreReturnAddressAndCall (Register target)
 
void EnforceStackAlignment ()
 
void CodeEntry ()
 
void ExceptionHandler ()
 
void BindExceptionHandler (Label *label)
 
void DecodeSandboxedPointer (Register value)
 
void LoadSandboxedPointerField (Register destination, const MemOperand &field_operand, Register scratch=no_reg)
 
void StoreSandboxedPointerField (Register value, const MemOperand &dst_field_operand, Register scratch=no_reg)
 
void LoadExternalPointerField (Register destination, MemOperand field_operand, ExternalPointerTag tag, Register isolate_root=no_reg, Register scratch=no_reg)
 
void LoadTrustedPointerField (Register destination, MemOperand field_operand, IndirectPointerTag tag, Register scratch=no_reg)
 
void StoreTrustedPointerField (Register value, MemOperand dst_field_operand, Register scratch=no_reg)
 
void LoadCodePointerField (Register destination, MemOperand field_operand, Register scratch)
 
void StoreCodePointerField (Register value, MemOperand dst_field_operand, Register scratch=no_reg)
 
void LoadIndirectPointerField (Register destination, MemOperand field_operand, IndirectPointerTag tag, Register scratch)
 
void StoreIndirectPointerField (Register value, MemOperand dst_field_operand, Register scratch)
 
void SmiToPtrArrayOffset (Register dst, Register src)
 
void LoadTaggedField (const Register &destination, const MemOperand &field_operand, const Register &scratch=no_reg)
 
void LoadTaggedSignedField (Register destination, MemOperand field_operand, Register scratch)
 
void StoreTaggedField (const Register &value, const MemOperand &dst_field_operand, const Register &scratch=no_reg)
 
void Zero (const MemOperand &dest)
 
void Zero (const MemOperand &dest1, const MemOperand &dest2)
 
void DecompressTaggedSigned (Register destination, MemOperand field_operand)
 
void DecompressTaggedSigned (Register destination, Register src)
 
void DecompressTagged (Register destination, MemOperand field_operand)
 
void DecompressTagged (Register destination, Register source)
 
void DecompressTagged (const Register &destination, Tagged_t immediate)
 
void LoadF64 (DoubleRegister dst, const MemOperand &mem, Register scratch=no_reg)
 
void LoadF32 (DoubleRegister dst, const MemOperand &mem, Register scratch=no_reg)
 
void StoreF32 (DoubleRegister src, const MemOperand &mem, Register scratch=no_reg)
 
void StoreF64 (DoubleRegister src, const MemOperand &mem, Register scratch=no_reg)
 
void LoadF32WithUpdate (DoubleRegister dst, const MemOperand &mem, Register scratch=no_reg)
 
void LoadF64WithUpdate (DoubleRegister dst, const MemOperand &mem, Register scratch=no_reg)
 
void StoreF32WithUpdate (DoubleRegister src, const MemOperand &mem, Register scratch=no_reg)
 
void StoreF64WithUpdate (DoubleRegister src, const MemOperand &mem, Register scratch=no_reg)
 
void LoadU64 (Register dst, const MemOperand &mem, Register scratch=no_reg)
 
void LoadU32 (Register dst, const MemOperand &mem, Register scratch=no_reg)
 
void LoadS32 (Register dst, const MemOperand &mem, Register scratch=no_reg)
 
void LoadU16 (Register dst, const MemOperand &mem, Register scratch=no_reg)
 
void LoadS16 (Register dst, const MemOperand &mem, Register scratch=no_reg)
 
void LoadU8 (Register dst, const MemOperand &mem, Register scratch=no_reg)
 
void LoadS8 (Register dst, const MemOperand &mem, Register scratch=no_reg)
 
void StoreU64 (Register src, const MemOperand &mem, Register scratch=no_reg)
 
void StoreU32 (Register src, const MemOperand &mem, Register scratch)
 
void StoreU16 (Register src, const MemOperand &mem, Register scratch)
 
void StoreU8 (Register src, const MemOperand &mem, Register scratch)
 
void LoadU64WithUpdate (Register dst, const MemOperand &mem, Register scratch=no_reg)
 
void StoreU64WithUpdate (Register src, const MemOperand &mem, Register scratch=no_reg)
 
void LoadU64LE (Register dst, const MemOperand &mem, Register scratch)
 
void LoadU32LE (Register dst, const MemOperand &mem, Register scratch)
 
void LoadU16LE (Register dst, const MemOperand &mem, Register scratch)
 
void StoreU64LE (Register src, const MemOperand &mem, Register scratch)
 
void StoreU32LE (Register src, const MemOperand &mem, Register scratch)
 
void StoreU16LE (Register src, const MemOperand &mem, Register scratch)
 
void LoadS32LE (Register dst, const MemOperand &mem, Register scratch)
 
void LoadS16LE (Register dst, const MemOperand &mem, Register scratch)
 
void LoadF64LE (DoubleRegister dst, const MemOperand &mem, Register scratch, Register scratch2)
 
void LoadF32LE (DoubleRegister dst, const MemOperand &mem, Register scratch, Register scratch2)
 
void StoreF32LE (DoubleRegister src, const MemOperand &mem, Register scratch, Register scratch2)
 
void StoreF64LE (DoubleRegister src, const MemOperand &mem, Register scratch, Register scratch2)
 
void LoadSimd128 (Simd128Register dst, const MemOperand &mem, Register scratch)
 
void StoreSimd128 (Simd128Register src, const MemOperand &mem, Register scratch)
 
void LoadSimd128LE (Simd128Register dst, const MemOperand &mem, Register scratch)
 
void StoreSimd128LE (Simd128Register src, const MemOperand &mem, Register scratch1, Simd128Register scratch2)
 
void LoadSimd128Uint64 (Simd128Register reg, const MemOperand &mem, Register scratch)
 
void LoadSimd128Uint32 (Simd128Register reg, const MemOperand &mem, Register scratch)
 
void LoadSimd128Uint16 (Simd128Register reg, const MemOperand &mem, Register scratch)
 
void LoadSimd128Uint8 (Simd128Register reg, const MemOperand &mem, Register scratch)
 
void StoreSimd128Uint64 (Simd128Register reg, const MemOperand &mem, Register scratch)
 
void StoreSimd128Uint32 (Simd128Register reg, const MemOperand &mem, Register scratch)
 
void StoreSimd128Uint16 (Simd128Register reg, const MemOperand &mem, Register scratch)
 
void StoreSimd128Uint8 (Simd128Register reg, const MemOperand &mem, Register scratch)
 
void LoadLane64LE (Simd128Register dst, const MemOperand &mem, int lane, Register scratch1, Simd128Register scratch2)
 
void LoadLane32LE (Simd128Register dst, const MemOperand &mem, int lane, Register scratch1, Simd128Register scratch2)
 
void LoadLane16LE (Simd128Register dst, const MemOperand &mem, int lane, Register scratch1, Simd128Register scratch2)
 
void LoadLane8LE (Simd128Register dst, const MemOperand &mem, int lane, Register scratch1, Simd128Register scratch2)
 
void StoreLane64LE (Simd128Register src, const MemOperand &mem, int lane, Register scratch1, Simd128Register scratch2)
 
void StoreLane32LE (Simd128Register src, const MemOperand &mem, int lane, Register scratch1, Simd128Register scratch2)
 
void StoreLane16LE (Simd128Register src, const MemOperand &mem, int lane, Register scratch1, Simd128Register scratch2)
 
void StoreLane8LE (Simd128Register src, const MemOperand &mem, int lane, Register scratch1, Simd128Register scratch2)
 
void LoadAndSplat64x2LE (Simd128Register dst, const MemOperand &mem, Register scratch)
 
void LoadAndSplat32x4LE (Simd128Register dst, const MemOperand &mem, Register scratch)
 
void LoadAndSplat16x8LE (Simd128Register dst, const MemOperand &me, Register scratch)
 
void LoadAndSplat8x16LE (Simd128Register dst, const MemOperand &mem, Register scratch)
 
void LoadAndExtend32x2SLE (Simd128Register dst, const MemOperand &mem, Register scratch)
 
void LoadAndExtend32x2ULE (Simd128Register dst, const MemOperand &mem, Register scratch1, Simd128Register scratch2)
 
void LoadAndExtend16x4SLE (Simd128Register dst, const MemOperand &mem, Register scratch)
 
void LoadAndExtend16x4ULE (Simd128Register dst, const MemOperand &mem, Register scratch1, Simd128Register scratch2)
 
void LoadAndExtend8x8SLE (Simd128Register dst, const MemOperand &mem, Register scratch)
 
void LoadAndExtend8x8ULE (Simd128Register dst, const MemOperand &mem, Register scratch1, Simd128Register scratch2)
 
void LoadV64ZeroLE (Simd128Register dst, const MemOperand &mem, Register scratch1, Simd128Register scratch2)
 
void LoadV32ZeroLE (Simd128Register dst, const MemOperand &mem, Register scratch1, Simd128Register scratch2)
 
void F64x2Splat (Simd128Register dst, DoubleRegister src, Register scratch)
 
void F32x4Splat (Simd128Register dst, DoubleRegister src, DoubleRegister scratch1, Register scratch2)
 
void I64x2Splat (Simd128Register dst, Register src)
 
void I32x4Splat (Simd128Register dst, Register src)
 
void I16x8Splat (Simd128Register dst, Register src)
 
void I8x16Splat (Simd128Register dst, Register src)
 
void F64x2ExtractLane (DoubleRegister dst, Simd128Register src, uint8_t imm_lane_idx, Simd128Register scratch1, Register scratch2)
 
void F32x4ExtractLane (DoubleRegister dst, Simd128Register src, uint8_t imm_lane_idx, Simd128Register scratch1, Register scratch2, Register scratch3)
 
void I64x2ExtractLane (Register dst, Simd128Register src, uint8_t imm_lane_idx, Simd128Register scratch)
 
void I32x4ExtractLane (Register dst, Simd128Register src, uint8_t imm_lane_idx, Simd128Register scratch)
 
void I16x8ExtractLaneU (Register dst, Simd128Register src, uint8_t imm_lane_idx, Simd128Register scratch)
 
void I16x8ExtractLaneS (Register dst, Simd128Register src, uint8_t imm_lane_idx, Simd128Register scratch)
 
void I8x16ExtractLaneU (Register dst, Simd128Register src, uint8_t imm_lane_idx, Simd128Register scratch)
 
void I8x16ExtractLaneS (Register dst, Simd128Register src, uint8_t imm_lane_idx, Simd128Register scratch)
 
void F64x2ReplaceLane (Simd128Register dst, Simd128Register src1, DoubleRegister src2, uint8_t imm_lane_idx, Register scratch1, Simd128Register scratch2)
 
void F32x4ReplaceLane (Simd128Register dst, Simd128Register src1, DoubleRegister src2, uint8_t imm_lane_idx, Register scratch1, DoubleRegister scratch2, Simd128Register scratch3)
 
void I64x2ReplaceLane (Simd128Register dst, Simd128Register src1, Register src2, uint8_t imm_lane_idx, Simd128Register scratch)
 
void I32x4ReplaceLane (Simd128Register dst, Simd128Register src1, Register src2, uint8_t imm_lane_idx, Simd128Register scratch)
 
void I16x8ReplaceLane (Simd128Register dst, Simd128Register src1, Register src2, uint8_t imm_lane_idx, Simd128Register scratch)
 
void I8x16ReplaceLane (Simd128Register dst, Simd128Register src1, Register src2, uint8_t imm_lane_idx, Simd128Register scratch)
 
void I64x2Mul (Simd128Register dst, Simd128Register src1, Simd128Register src2, Register scratch1, Register scrahc2, Register scratch3, Simd128Register scratch4)
 
void F64x2Min (Simd128Register dst, Simd128Register src1, Simd128Register src2, Simd128Register scratch1, Simd128Register scratch2)
 
void F64x2Max (Simd128Register dst, Simd128Register src1, Simd128Register src2, Simd128Register scratch1, Simd128Register scratch2)
 
void F64x2ConvertLowI32x4U (Simd128Register dst, Simd128Register src, Register scratch1, Simd128Register scratch2)
 
void I64x2UConvertI32x4Low (Simd128Register dst, Simd128Register src, Register scratch1, Simd128Register scratch2)
 
void I64x2UConvertI32x4High (Simd128Register dst, Simd128Register src, Register scratch1, Simd128Register scratch2)
 
void I32x4UConvertI16x8Low (Simd128Register dst, Simd128Register src, Register scratch1, Simd128Register scratch2)
 
void I32x4UConvertI16x8High (Simd128Register dst, Simd128Register src, Register scratch1, Simd128Register scratch2)
 
void I16x8UConvertI8x16Low (Simd128Register dst, Simd128Register src, Register scratch1, Simd128Register scratch2)
 
void I16x8UConvertI8x16High (Simd128Register dst, Simd128Register src, Register scratch1, Simd128Register scratch2)
 
void I8x16BitMask (Register dst, Simd128Register src, Register scratch1, Register scratch2, Simd128Register scratch3)
 
void I8x16Shuffle (Simd128Register dst, Simd128Register src1, Simd128Register src2, uint64_t high, uint64_t low, Register scratch1, Register scratch2, Simd128Register scratch3)
 
void I32x4DotI8x16AddS (Simd128Register dst, Simd128Register src1, Simd128Register src2, Simd128Register src3)
 
void V128AnyTrue (Register dst, Simd128Register src, Register scratch1, Register scratch2, Simd128Register scratch3)
 
void S128Const (Simd128Register dst, uint64_t high, uint64_t low, Register scratch1, Register scratch2)
 
void S128Select (Simd128Register dst, Simd128Register src1, Simd128Register src2, Simd128Register mask)
 
void LoadReceiver (Register dest)
 
void StoreReceiver (Register rec)
 
void RecordWriteField (Register object, int offset, Register value, Register slot_address, LinkRegisterStatus lr_status, SaveFPRegsMode save_fp, SmiCheck smi_check=SmiCheck::kInline, SlotDescriptor slot=SlotDescriptor::ForDirectPointerSlot())
 
void RecordWrite (Register object, Register slot_address, Register value, LinkRegisterStatus lr_status, SaveFPRegsMode save_fp, SmiCheck smi_check=SmiCheck::kInline, SlotDescriptor slot=SlotDescriptor::ForDirectPointerSlot())
 
void EnterExitFrame (Register scratch, int stack_space, StackFrame::Type frame_type)
 
void LeaveExitFrame (Register scratch)
 
void LoadGlobalProxy (Register dst)
 
void LoadNativeContextSlot (Register dst, int index)
 
void AddSmiLiteral (Register dst, Register src, Tagged< Smi > smi, Register scratch)
 
void SubSmiLiteral (Register dst, Register src, Tagged< Smi > smi, Register scratch)
 
void CmpSmiLiteral (Register src1, Tagged< Smi > smi, Register scratch, CRegister cr=cr0)
 
void CmplSmiLiteral (Register src1, Tagged< Smi > smi, Register scratch, CRegister cr=cr0)
 
void AndSmiLiteral (Register dst, Register src, Tagged< Smi > smi, Register scratch, RCBit rc=LeaveRC)
 
void InvokeFunctionCode (Register function, Register new_target, Register expected_parameter_count, Register actual_parameter_count, InvokeType type)
 
void CheckDebugHook (Register fun, Register new_target, Register expected_parameter_count, Register actual_parameter_count)
 
void InvokeFunctionWithNewTarget (Register function, Register new_target, Register actual_parameter_count, InvokeType type)
 
void InvokeFunction (Register function, Register expected_parameter_count, Register actual_parameter_count, InvokeType type)
 
void PushStackHandler ()
 
void PopStackHandler ()
 
void CompareObjectType (Register heap_object, Register map, Register type_reg, InstanceType type)
 
void CompareObjectTypeRange (Register heap_object, Register map, Register type_reg, Register scratch, InstanceType lower_limit, InstanceType higher_limit)
 
void IsObjectType (Register heap_object, Register scratch1, Register scratch2, InstanceType type)
 
void JumpIfObjectType (Register object, Register map, Register type_reg, InstanceType type, Label *if_cond_pass, Condition cond=eq)
 
void CompareInstanceType (Register map, Register type_reg, InstanceType type)
 
void CompareInstanceTypeRange (Register map, Register type_reg, Register scratch, InstanceType lower_limit, InstanceType higher_limit)
 
void CompareRoot (Register obj, RootIndex index)
 
void CompareTaggedRoot (const Register &with, RootIndex index)
 
void PushRoot (RootIndex index)
 
void JumpIfRoot (Register with, RootIndex index, Label *if_equal)
 
void JumpIfNotRoot (Register with, RootIndex index, Label *if_not_equal)
 
void CompareRange (Register value, Register scratch, unsigned lower_limit, unsigned higher_limit)
 
void JumpIfIsInRange (Register value, Register scratch, unsigned lower_limit, unsigned higher_limit, Label *on_in_range)
 
void JumpIfJSAnyIsNotPrimitive (Register heap_object, Register scratch, Label *target, Label::Distance distance=Label::kFar, Condition condition=Condition::kUnsignedGreaterThanEqual)
 
void JumpIfJSAnyIsPrimitive (Register heap_object, Register scratch, Label *target, Label::Distance distance=Label::kFar)
 
void AssertFeedbackCell (Register object, Register scratch) NOOP_UNLESS_DEBUG_CODE
 
void AssertFeedbackVector (Register object, Register scratch) NOOP_UNLESS_DEBUG_CODE
 
void GenerateTailCallToReturnedCode (Runtime::FunctionId function_id)
 
void ReplaceClosureCodeWithOptimizedCode (Register optimized_code, Register closure, Register scratch1, Register slot_address)
 
void LoadFeedbackVectorFlagsAndJumpIfNeedsProcessing (Register flags, Register feedback_vector, CodeKind current_code_kind, Label *flags_need_processing)
 
void OptimizeCodeOrTailCallOptimizedCodeSlot (Register flags, Register feedback_vector)
 
void CallJSEntry (Register target)
 
void CallRuntime (const Runtime::Function *f, int num_arguments)
 
void CallRuntime (Runtime::FunctionId fid)
 
void CallRuntime (Runtime::FunctionId fid, int num_arguments)
 
void TailCallRuntime (Runtime::FunctionId fid)
 
void JumpToExternalReference (const ExternalReference &builtin, bool builtin_exit_frame=false)
 
void LoadWeakValue (Register out, Register in, Label *target_if_cleared)
 
void IncrementCounter (StatsCounter *counter, int value, Register scratch1, Register scratch2)
 
void EmitIncrementCounter (StatsCounter *counter, int value, Register scratch1, Register scratch2)
 
void DecrementCounter (StatsCounter *counter, int value, Register scratch1, Register scratch2)
 
void EmitDecrementCounter (StatsCounter *counter, int value, Register scratch1, Register scratch2)
 
void StackOverflowCheck (Register num_args, Register scratch, Label *stack_overflow)
 
void LoadStackLimit (Register destination, StackLimitKind kind, Register scratch)
 
void JumpIfNotSmi (Register value, Label *not_smi_label)
 
void AssertConstructor (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertFunction (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertCallableFunction (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertBoundFunction (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertGeneratorObject (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertUndefinedOrAllocationSite (Register object, Register scratch) NOOP_UNLESS_DEBUG_CODE
 
void AssertJSAny (Register object, Register map_tmp, Register tmp, AbortReason abort_reason) NOOP_UNLESS_DEBUG_CODE
 
template<typename Field >
void DecodeField (Register dst, Register src, RCBit rc=LeaveRC)
 
template<typename Field >
void DecodeField (Register reg, RCBit rc=LeaveRC)
 
void TestCodeIsMarkedForDeoptimization (Register code, Register scratch1, Register scratch2)
 
Operand ClearedValue () const
 
void EnterFrame (StackFrame::Type type)
 
void EnterFrame (StackFrame::Type type, bool load_constant_pool_pointer_reg)
 
void LeaveFrame (StackFrame::Type type)
 
void StubPrologue (StackFrame::Type type)
 
void Prologue ()
 
void InitializeRootRegister ()
 
void LoadIsolateField (const Register &rd, IsolateFieldId id)
 
void jmp (Label *L, Label::Distance distance=Label::kFar)
 
void Trap ()
 
void DebugBreak ()
 
void Assert (Condition cc, AbortReason reason, Register rs, Operand rt)
 
void AssertJSAny (Register object, Register map_tmp, Register tmp, AbortReason abort_reason)
 
void AssertSmiOrHeapObjectInMainCompressionCage (Register object) NOOP_UNLESS_DEBUG_CODE
 
void Check (Condition cc, AbortReason reason, Register rs, Operand rt)
 
void SbxCheck (Condition cc, AbortReason reason, Register rs, Operand rt)
 
void Abort (AbortReason msg)
 
void Branch (Label *target)
 
void Branch (int32_t target)
 
void BranchLong (Label *L)
 
void Branch (Label *target, Condition cond, Register r1, const Operand &r2, Label::Distance distance=Label::kFar)
 
void Branch (Label *target, Label::Distance distance)
 
void Branch (int32_t target, Condition cond, Register r1, const Operand &r2, Label::Distance distance=Label::kFar)
 
void Branch (Label *L, Condition cond, Register rj, RootIndex index, Label::Distance distance=Label::kFar)
 
void BranchRange (Label *L, Condition cond, Register value, Register scratch, unsigned lower_limit, unsigned higher_limit, Label::Distance distance=Label::kFar)
 
void AllocateStackSpace (Register bytes)
 
void AllocateStackSpace (int bytes)
 
void NegateBool (Register rd, Register rs)
 
void CompareF32 (Register rd, FPUCondition cc, FPURegister cmp1, FPURegister cmp2)
 
void CompareF64 (Register rd, FPUCondition cc, FPURegister cmp1, FPURegister cmp2)
 
void CompareIsNotNanF32 (Register rd, FPURegister cmp1, FPURegister cmp2)
 
void CompareIsNotNanF64 (Register rd, FPURegister cmp1, FPURegister cmp2)
 
void CompareIsNanF32 (Register rd, FPURegister cmp1, FPURegister cmp2)
 
void CompareIsNanF64 (Register rd, FPURegister cmp1, FPURegister cmp2)
 
void BranchTrueShortF (Register rs, Label *target)
 
void BranchFalseShortF (Register rs, Label *target)
 
void BranchTrueF (Register rs, Label *target)
 
void BranchFalseF (Register rs, Label *target)
 
void CompareTaggedAndBranch (Label *label, Condition cond, Register r1, const Operand &r2, bool need_link=false)
 
void LiLower32BitHelper (Register rd, Operand j)
 
void li_optimized (Register rd, Operand j, LiFlags mode=OPTIMIZE_SIZE)
 
void li (Register rd, Operand j, LiFlags mode=OPTIMIZE_SIZE)
 
void li (Register rd, intptr_t j, LiFlags mode=OPTIMIZE_SIZE)
 
void Move (Register output, MemOperand operand)
 
void li (Register dst, Handle< HeapObject > value, RelocInfo::Mode rmode=RelocInfo::FULL_EMBEDDED_OBJECT)
 
void li (Register dst, ExternalReference value, LiFlags mode=OPTIMIZE_SIZE)
 
void LoadFromConstantsTable (Register destination, int constant_index) final
 
void LoadRootRegisterOffset (Register destination, intptr_t offset) final
 
void LoadRootRelative (Register destination, int32_t offset) final
 
void StoreRootRelative (int32_t offset, Register value) final
 
MemOperand ExternalReferenceAsOperand (ExternalReference reference, Register scratch)
 
MemOperand ExternalReferenceAsOperand (IsolateFieldId id)
 
void GenPCRelativeJump (Register rd, int32_t imm32)
 
void GenPCRelativeJumpAndLink (Register rd, int32_t imm32)
 
void near_jump (int offset, RelocInfo::Mode rmode)
 
void near_call (int offset, RelocInfo::Mode rmode)
 
void near_call (HeapNumberRequest request)
 
void Jump (Register target, COND_ARGS)
 
void Jump (intptr_t target, RelocInfo::Mode rmode, COND_ARGS)
 
void Jump (Address target, RelocInfo::Mode rmode, COND_ARGS)
 
bool CanUseNearCallOrJump (RelocInfo::Mode rmode)
 
void PatchAndJump (Address target)
 
void Jump (Handle< Code > code, RelocInfo::Mode rmode, COND_ARGS)
 
void Jump (const ExternalReference &reference)
 
void Call (Register target, COND_ARGS)
 
void Call (Address target, RelocInfo::Mode rmode, COND_ARGS)
 
void Call (Handle< Code > code, RelocInfo::Mode rmode=RelocInfo::CODE_TARGET, COND_ARGS)
 
void Call (Label *target)
 
void LoadAddress (Register dst, Label *target, RelocInfo::Mode rmode=RelocInfo::INTERNAL_REFERENCE_ENCODED)
 
void LoadCodeInstructionStart (Register destination, Register code_object, CodeEntrypointTag tag=kDefaultCodeEntrypointTag)
 
void CallCodeObject (Register code_object, CodeEntrypointTag tag)
 
void JumpCodeObject (Register code_object, CodeEntrypointTag tag, JumpMode jump_mode=JumpMode::kJump)
 
void CallJSFunction (Register function_object, uint16_t argument_count)
 
void JumpJSFunction (Register function_object, JumpMode jump_mode=JumpMode::kJump)
 
void LoadEntryFromBuiltinIndex (Register builtin_index, Register target)
 
void LoadEntryFromBuiltin (Builtin builtin, Register destination)
 
MemOperand EntryFromBuiltinAsOperand (Builtin builtin)
 
void CallBuiltinByIndex (Register builtin_index, Register target)
 
void CallBuiltin (Builtin builtin)
 
void TailCallBuiltin (Builtin builtin)
 
void TailCallBuiltin (Builtin builtin, Condition cond, Register type, Operand range)
 
void StoreReturnAddressAndCall (Register target)
 
void BailoutIfDeoptimized ()
 
void CallForDeoptimization (Builtin target, int deopt_id, Label *exit, DeoptimizeKind kind, Label *ret, Label *jump_deoptimization_entry_label)
 
void Ret (COND_ARGS)
 
void Drop (int count, Condition cond=cc_always, Register reg=no_reg, const Operand &op=Operand(no_reg))
 
void DropAndRet (int drop)
 
void DropAndRet (int drop, Condition cond, Register reg, const Operand &op)
 
void push (Register src)
 
void Push (Register src)
 
void Push (Handle< HeapObject > handle)
 
void Push (Tagged< Smi > smi)
 
void Push (Tagged< TaggedIndex > index)
 
template<typename... Rs>
void Push (Register r, Rs... rs)
 
void Push (Register src, Condition cond, Register tst1, Register tst2)
 
void PushArray (Register array, Register size, PushArrayOrder order=kNormal)
 
void Switch (Register scratch, Register value, int case_value_base, Label **labels, int num_labels)
 
void MaybeSaveRegisters (RegList registers)
 
void MaybeRestoreRegisters (RegList registers)
 
void CallEphemeronKeyBarrier (Register object, Operand offset, SaveFPRegsMode fp_mode)
 
void CallIndirectPointerBarrier (Register object, Operand offset, SaveFPRegsMode fp_mode, IndirectPointerTag tag)
 
void CallRecordWriteStubSaveRegisters (Register object, Operand offset, SaveFPRegsMode fp_mode, StubCallMode mode=StubCallMode::kCallBuiltinPointer)
 
void CallRecordWriteStub (Register object, Register slot_address, SaveFPRegsMode fp_mode, StubCallMode mode=StubCallMode::kCallBuiltinPointer)
 
void MoveObjectAndSlot (Register dst_object, Register dst_slot, Register object, Operand offset)
 
void PushAll (RegList registers)
 
void PopAll (RegList registers)
 
void PushAll (DoubleRegList registers, int stack_slot_size=kDoubleSize)
 
void PopAll (DoubleRegList registers, int stack_slot_size=kDoubleSize)
 
void MultiPush (RegList regs)
 
void MultiPushFPU (DoubleRegList regs)
 
int RequiredStackSizeForCallerSaved (SaveFPRegsMode fp_mode, Register exclusion1=no_reg, Register exclusion2=no_reg, Register exclusion3=no_reg) const
 
int PushCallerSaved (SaveFPRegsMode fp_mode, Register exclusion1=no_reg, Register exclusion2=no_reg, Register exclusion3=no_reg)
 
int PopCallerSaved (SaveFPRegsMode fp_mode, Register exclusion1=no_reg, Register exclusion2=no_reg, Register exclusion3=no_reg)
 
void pop (Register dst)
 
void Pop (Register dst)
 
template<typename... Rs>
void Pop (Register r, Rs... rs)
 
void Pop (uint32_t count=1)
 
void MultiPop (RegList regs)
 
void MultiPopFPU (DoubleRegList regs)
 
void Amosub_w (bool aq, bool rl, Register rd, Register rs1, Register rs2)
 
void SmiUntag (Register dst, const MemOperand &src)
 
void SmiUntag (Register dst, Register src)
 
void SmiUntag (Register reg)
 
void SmiToInt32 (Register smi)
 
void SmiToInt32 (Register dst, Register smi)
 
void AssertNotSmi (Register object, AbortReason reason=AbortReason::kOperandIsASmi)
 
void AssertSmi (Register object, AbortReason reason=AbortReason::kOperandIsASmi)
 
void AssertZeroExtended (Register int32_register) NOOP_UNLESS_DEBUG_CODE
 
void AssertSignExtended (Register int32_register) NOOP_UNLESS_DEBUG_CODE
 
void AssertRange (Condition cond, AbortReason reason, Register value, Register scratch, unsigned lower_limit, unsigned higher_limit) NOOP_UNLESS_DEBUG_CODE
 
int CalculateStackPassedDWords (int num_gp_arguments, int num_fp_arguments)
 
void PrepareCallCFunction (int num_reg_arguments, int num_double_registers, Register scratch)
 
void PrepareCallCFunction (int num_reg_arguments, Register scratch)
 
int CallCFunction (ExternalReference function, int num_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, Label *return_location=nullptr)
 
int CallCFunction (Register function, int num_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, Label *return_location=nullptr)
 
int CallCFunction (ExternalReference function, int num_reg_arguments, int num_double_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, Label *return_location=nullptr)
 
int CallCFunction (Register function, int num_reg_arguments, int num_double_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, Label *return_location=nullptr)
 
void MovFromFloatResult (DoubleRegister dst)
 
void MovFromFloatParameter (DoubleRegister dst)
 
void MovToFloatParameter (DoubleRegister src)
 
void MovToFloatParameters (DoubleRegister src1, DoubleRegister src2)
 
void MovToFloatResult (DoubleRegister src)
 
void PrepareCEntryArgs (int num_args)
 
void PrepareCEntryFunction (const ExternalReference &ref)
 
void CheckPageFlag (Register object, int mask, Condition cc, Label *condition_met)
 
void CheckPageFlag (const Register &object, Register scratch, int mask, Condition cc, Label *condition_met)
 
void TruncateDoubleToI (Isolate *isolate, Zone *zone, Register result, DoubleRegister double_input, StubCallMode stub_mode)
 
void CompareI (Register rd, Register rs, const Operand &rt, Condition cond)
 
void LoadZeroIfConditionNotZero (Register dest, Register condition)
 
void LoadZeroIfConditionZero (Register dest, Register condition)
 
void SignExtendByte (Register rd, Register rs)
 
void SignExtendShort (Register rd, Register rs)
 
void Clz32 (Register rd, Register rs)
 
void Ctz32 (Register rd, Register rs)
 
void Popcnt32 (Register rd, Register rs, Register scratch)
 
void ExtractBits (Register rt, Register rs, uint16_t pos, uint16_t size, bool sign_extend=false)
 
void ExtractBits (Register dest, Register source, Register pos, int size, bool sign_extend=false)
 
void InsertBits (Register dest, Register source, Register pos, int size)
 
void Neg_s (FPURegister fd, FPURegister fs)
 
void Neg_d (FPURegister fd, FPURegister fs)
 
void ByteSwap (Register dest, Register src, int operand_size, Register scratch=no_reg)
 
template<int NBYTES>
void ReverseBytesHelper (Register rd, Register rs, Register tmp1, Register tmp2)
 
void Clear_if_nan_d (Register rd, FPURegister fs)
 
void Clear_if_nan_s (Register rd, FPURegister fs)
 
void Trunc_uw_s (Register rd, FPURegister fs, Register result=no_reg)
 
template<int NBYTES, bool IS_SIGNED>
void UnalignedLoadHelper (Register rd, const MemOperand &rs)
 
template<int NBYTES>
void UnalignedStoreHelper (Register rd, const MemOperand &rs, Register scratch_other=no_reg)
 
template<int NBYTES>
void UnalignedFLoadHelper (FPURegister frd, const MemOperand &rs)
 
template<int NBYTES>
void UnalignedFStoreHelper (FPURegister frd, const MemOperand &rs)
 
template<typename Reg_T , typename Func >
void AlignedLoadHelper (Reg_T target, const MemOperand &rs, Func generator)
 
template<typename Reg_T , typename Func >
void AlignedStoreHelper (Reg_T value, const MemOperand &rs, Func generator)
 
template<int NBYTES, bool LOAD_SIGNED>
void LoadNBytes (Register rd, const MemOperand &rs, Register scratch)
 
template<int NBYTES, bool LOAD_SIGNED>
void LoadNBytesOverwritingBaseReg (const MemOperand &rs, Register scratch0, Register scratch1)
 
void Ulh (Register rd, const MemOperand &rs)
 
void Ulhu (Register rd, const MemOperand &rs)
 
void Ush (Register rd, const MemOperand &rs)
 
void Ulw (Register rd, const MemOperand &rs)
 
void Usw (Register rd, const MemOperand &rs)
 
void Uld (Register rd, const MemOperand &rs)
 
void Usd (Register rd, const MemOperand &rs)
 
void ULoadFloat (FPURegister fd, const MemOperand &rs)
 
void UStoreFloat (FPURegister fd, const MemOperand &rs)
 
void ULoadDouble (FPURegister fd, const MemOperand &rs)
 
void UStoreDouble (FPURegister fd, const MemOperand &rs)
 
void Lb (Register rd, const MemOperand &rs, Trapper &&trapper=[](int){})
 
void Lbu (Register rd, const MemOperand &rs, Trapper &&trapper=[](int){})
 
void Sb (Register rd, const MemOperand &rs, Trapper &&trapper=[](int){})
 
void Lh (Register rd, const MemOperand &rs, Trapper &&trapper=[](int){})
 
void Lhu (Register rd, const MemOperand &rs, Trapper &&trapper=[](int){})
 
void Sh (Register rd, const MemOperand &rs, Trapper &&trapper=[](int){})
 
void Lw (Register rd, const MemOperand &rs, Trapper &&trapper=[](int){})
 
void Sw (Register rd, const MemOperand &rs, Trapper &&trapper=[](int){})
 
void LoadFloat (FPURegister fd, const MemOperand &src, Trapper &&trapper=[](int){})
 
void StoreFloat (FPURegister fs, const MemOperand &dst, Trapper &&trapper=[](int){})
 
void LoadDouble (FPURegister fd, const MemOperand &src, Trapper &&trapper=[](int){})
 
void StoreDouble (FPURegister fs, const MemOperand &dst, Trapper &&trapper=[](int){})
 
void Ll (Register rd, const MemOperand &rs, Trapper &&trapper=[](int){})
 
void Sc (Register rd, const MemOperand &rs, Trapper &&trapper=[](int){})
 
void Float32Max (FPURegister dst, FPURegister src1, FPURegister src2)
 
void Float32Min (FPURegister dst, FPURegister src1, FPURegister src2)
 
void Float64Max (FPURegister dst, FPURegister src1, FPURegister src2)
 
void Float64Min (FPURegister dst, FPURegister src1, FPURegister src2)
 
template<typename F >
void FloatMinMaxHelper (FPURegister dst, FPURegister src1, FPURegister src2, MaxMinKind kind)
 
bool IsDoubleZeroRegSet ()
 
bool IsSingleZeroRegSet ()
 
void MoveIfZero (Register rd, Register rj, Register rk)
 
void Move (Register dst, Tagged< Smi > smi)
 
void Move (Register dst, Register src)
 
void MoveDouble (FPURegister dst, FPURegister src)
 
void MoveFloat (FPURegister dst, FPURegister src)
 
void Move (FPURegister dst, FPURegister src)
 
void ExtractHighWordFromF64 (Register dst_high, FPURegister src)
 
void InsertHighWordF64 (FPURegister dst, Register src_high)
 
void ExtractLowWordFromF64 (Register dst_low, FPURegister src)
 
void InsertLowWordF64 (FPURegister dst, Register src_low)
 
void LoadFPRImmediate (FPURegister dst, float imm)
 
void LoadFPRImmediate (FPURegister dst, double imm)
 
void LoadFPRImmediate (FPURegister dst, uint32_t src)
 
void LoadFPRImmediate (FPURegister dst, uint64_t src)
 
void AddOverflowWord (Register dst, Register left, const Operand &right, Register overflow)
 
void SubOverflowWord (Register dst, Register left, const Operand &right, Register overflow)
 
void MulOverflow32 (Register dst, Register left, const Operand &right, Register overflow, bool sign_extend_inputs=true)
 
void MulOverflow64 (Register dst, Register left, const Operand &right, Register overflow)
 
template<typename Func >
void GenerateSwitchTable (Register index, size_t case_count, Func GetLabelFunction, int case_value_base=0, Register scratch=no_reg)
 
void LoadRoot (Register destination, RootIndex index) final
 
void LoadTaggedRoot (Register destination, RootIndex index)
 
void LoadCompressedTaggedRoot (Register destination, RootIndex index)
 
void LoadMap (Register destination, Register object)
 
void LoadFeedbackVector (Register dst, Register closure, Register scratch, Label *fbv_undef)
 
void LoadCompressedMap (Register dst, Register object)
 
void FPUCanonicalizeNaN (const DoubleRegister dst, const DoubleRegister src)
 
void Cvt_d_uw (FPURegister fd, Register rs)
 
void Cvt_d_w (FPURegister fd, Register rs)
 
void Cvt_d_ul (FPURegister fd, Register rs)
 
void Cvt_s_uw (FPURegister fd, Register rs)
 
void Cvt_s_w (FPURegister fd, Register rs)
 
void Cvt_s_ul (FPURegister fd, Register rs)
 
void Trunc_uw_d (Register rd, FPURegister fs, Register result=no_reg)
 
void Trunc_w_d (Register rd, FPURegister fs, Register result=no_reg)
 
void Trunc_w_s (Register rd, FPURegister fs, Register result=no_reg)
 
void Round_w_s (Register rd, FPURegister fs, Register result=no_reg)
 
void Round_w_d (Register rd, FPURegister fs, Register result=no_reg)
 
void Ceil_w_s (Register rd, FPURegister fs, Register result=no_reg)
 
void Ceil_w_d (Register rd, FPURegister fs, Register result=no_reg)
 
void Floor_w_s (Register rd, FPURegister fs, Register result=no_reg)
 
void Floor_w_d (Register rd, FPURegister fs, Register result=no_reg)
 
void Trunc_s_s (FPURegister fd, FPURegister fs, FPURegister fpu_scratch)
 
void Round_s_s (FPURegister fd, FPURegister fs, FPURegister fpu_scratch)
 
void Floor_s_s (FPURegister fd, FPURegister fs, FPURegister fpu_scratch)
 
void Ceil_s_s (FPURegister fd, FPURegister fs, FPURegister fpu_scratch)
 
void Ceil_f (VRegister dst, VRegister src, Register scratch, VRegister v_scratch)
 
void Ceil_d (VRegister dst, VRegister src, Register scratch, VRegister v_scratch)
 
void Floor_f (VRegister dst, VRegister src, Register scratch, VRegister v_scratch)
 
void Floor_d (VRegister dst, VRegister src, Register scratch, VRegister v_scratch)
 
void Trunc_f (VRegister dst, VRegister src, Register scratch, VRegister v_scratch)
 
void Trunc_d (VRegister dst, VRegister src, Register scratch, VRegister v_scratch)
 
void Round_f (VRegister dst, VRegister src, Register scratch, VRegister v_scratch)
 
void Round_d (VRegister dst, VRegister src, Register scratch, VRegister v_scratch)
 
void FaddS (FPURegister dst, FPURegister lhs, FPURegister rhs)
 
void SmiTag (Register dst, Register src)
 
void SmiTag (Register reg)
 
void JumpIfSmi (Register value, Label *smi_label, Label::Distance distance=Label::kFar)
 
void JumpIfEqual (Register a, int32_t b, Label *dest)
 
void JumpIfLessThan (Register a, int32_t b, Label *dest)
 
void JumpIfUnsignedLessThan (Register x, int32_t y, Label *dest)
 
void JumpIfMarking (Label *is_marking, Label::Distance condition_met_distance=Label::kFar)
 
void JumpIfNotMarking (Label *not_marking, Label::Distance condition_met_distance=Label::kFar)
 
void PushStandardFrame (Register function_reg)
 
void CalcScaledAddress (Register rd, Register rt, Register rs, uint8_t sa)
 
void ComputeCodeStartAddress (Register dst)
 
void LoadTrustedPointerField (Register destination, MemOperand field_operand, IndirectPointerTag tag)
 
void StoreTrustedPointerField (Register value, MemOperand dst_field_operand)
 
void LoadCodePointerField (Register destination, MemOperand field_operand)
 
void StoreCodePointerField (Register value, MemOperand dst_field_operand)
 
void LoadExternalPointerField (Register destination, MemOperand field_operand, ExternalPointerTagRange tag_range, Register isolate_root=no_reg)
 
void CodeEntry ()
 
void ExceptionHandler ()
 
void JumpTarget ()
 
void BindJumpTarget (Label *label)
 
void CallTarget ()
 
void JumpOrCallTarget ()
 
void BindCallTarget (Label *label)
 
void BindJumpOrCallTarget (Label *label)
 
void BindExceptionHandler (Label *label)
 
void WasmRvvExtractLane (Register dst, VRegister src, int8_t idx, VSew sew, Vlmul lmul)
 
void WasmRvvEq (VRegister dst, VRegister lhs, VRegister rhs, VSew sew, Vlmul lmul)
 
void WasmRvvNe (VRegister dst, VRegister lhs, VRegister rhs, VSew sew, Vlmul lmul)
 
void WasmRvvGeS (VRegister dst, VRegister lhs, VRegister rhs, VSew sew, Vlmul lmul)
 
void WasmRvvGeU (VRegister dst, VRegister lhs, VRegister rhs, VSew sew, Vlmul lmul)
 
void WasmRvvGtS (VRegister dst, VRegister lhs, VRegister rhs, VSew sew, Vlmul lmul)
 
void WasmRvvGtU (VRegister dst, VRegister lhs, VRegister rhs, VSew sew, Vlmul lmul)
 
void WasmRvvS128const (VRegister dst, const uint8_t imms[16])
 
void LoadLane (int sz, VRegister dst, uint8_t laneidx, MemOperand src, Trapper &&trapper=[](int){})
 
void StoreLane (int sz, VRegister src, uint8_t laneidx, MemOperand dst, Trapper &&trapper=[](int){})
 
void LoadReceiver (Register dest)
 
void StoreReceiver (Register rec)
 
bool IsNear (Label *L, Condition cond, int rs_reg)
 
void Swap (Register reg1, Register reg2, Register scratch=no_reg)
 
void PushRoot (RootIndex index)
 
void CompareRootAndBranch (const Register &obj, RootIndex index, Condition cc, Label *target, ComparisonMode mode=ComparisonMode::kDefault)
 
void CompareTaggedRootAndBranch (const Register &with, RootIndex index, Condition cc, Label *target)
 
void JumpIfRoot (Register with, RootIndex index, Label *if_equal, Label::Distance distance=Label::kFar)
 
void CompareRoot (const Register &obj, RootIndex index, const Register &result, ComparisonMode mode=ComparisonMode::kDefault)
 
void CompareTaggedRoot (const Register &with, RootIndex index, const Register &result)
 
void JumpIfNotRoot (Register with, RootIndex index, Label *if_not_equal, Label::Distance distance=Label::kFar)
 
void JumpIfIsInRange (Register value, unsigned lower_limit, unsigned higher_limit, Label *on_in_range)
 
void JumpIfObjectType (Label *target, Condition cc, Register object, InstanceType instance_type, Register scratch=no_reg)
 
void JumpIfJSAnyIsNotPrimitive (Register heap_object, Register scratch, Label *target, Label::Distance distance=Label::kFar, Condition condition=Condition::kUnsignedGreaterThanEqual)
 
void JumpIfJSAnyIsPrimitive (Register heap_object, Register scratch, Label *target, Label::Distance distance=Label::kFar)
 
void RecordWriteField (Register object, int offset, Register value, RAStatus ra_status, SaveFPRegsMode save_fp, SmiCheck smi_check=SmiCheck::kInline, ReadOnlyCheck ro_check=ReadOnlyCheck::kInline, SlotDescriptor slot=SlotDescriptor::ForDirectPointerSlot())
 
void RecordWrite (Register object, Operand offset, Register value, RAStatus ra_status, SaveFPRegsMode save_fp, SmiCheck smi_check=SmiCheck::kInline, ReadOnlyCheck ro_check=ReadOnlyCheck::kInline, SlotDescriptor slot=SlotDescriptor::ForDirectPointerSlot())
 
void LoadWordPair (Register rd, const MemOperand &rs)
 
void StoreWordPair (Register rd, const MemOperand &rs)
 
void Madd_s (FPURegister fd, FPURegister fr, FPURegister fs, FPURegister ft)
 
void Madd_d (FPURegister fd, FPURegister fr, FPURegister fs, FPURegister ft)
 
void Msub_s (FPURegister fd, FPURegister fr, FPURegister fs, FPURegister ft)
 
void Msub_d (FPURegister fd, FPURegister fr, FPURegister fs, FPURegister ft)
 
void EnterExitFrame (Register scratch, int stack_space, StackFrame::Type frame_type)
 
void LeaveExitFrame (Register scratch)
 
void AssertStackIsAligned ()
 
void LoadGlobalProxy (Register dst)
 
void LoadNativeContextSlot (Register dst, int index)
 
void TryLoadOptimizedOsrCode (Register scratch_and_result, CodeKind min_opt_level, Register feedback_vector, FeedbackSlot slot, Label *on_result, Label::Distance distance)
 
void LoadGlobalFunctionInitialMap (Register function, Register map, Register scratch)
 
void CallDebugOnFunctionCall (Register fun, Register new_target, Register expected_parameter_count_or_dispatch_handle, Register actual_parameter_count)
 
void InvokeFunction (Register function, Register expected_parameter_count, Register actual_parameter_count, InvokeType type)
 
void InvokeFunctionWithNewTarget (Register function, Register new_target, Register actual_parameter_count, InvokeType type)
 
void InvokeFunctionCode (Register function, Register new_target, Register expected_parameter_count, Register actual_parameter_count, InvokeType type)
 
void CheckDebugHook (Register fun, Register new_target, Register expected_parameter_count, Register actual_parameter_count)
 
void CompareObjectTypeAndJump (Register heap_object, Register map, Register type_reg, InstanceType type, Condition cond, Label *target, Label::Distance distance)
 
void IsObjectType (Register heap_object, Register scratch1, Register scratch2, InstanceType type)
 
void PushStackHandler ()
 
void PopStackHandler ()
 
void AssertFeedbackCell (Register object, Register scratch) NOOP_UNLESS_DEBUG_CODE
 
void AssertFeedbackVector (Register object, Register scratch) NOOP_UNLESS_DEBUG_CODE
 
void ReplaceClosureCodeWithOptimizedCode (Register optimized_code, Register closure)
 
void GenerateTailCallToReturnedCode (Runtime::FunctionId function_id)
 
void LoadFeedbackVectorFlagsAndJumpIfNeedsProcessing (Register flags, Register feedback_vector, CodeKind current_code_kind, Label *flags_need_processing)
 
void OptimizeCodeOrTailCallOptimizedCodeSlot (Register flags, Register feedback_vector)
 
void GetObjectType (Register function, Register map, Register type_reg)
 
void GetInstanceTypeRange (Register map, Register type_reg, InstanceType lower_limit, Register range)
 
void CallRuntime (const Runtime::Function *f, int num_arguments)
 
void CallRuntime (Runtime::FunctionId fid)
 
void CallRuntime (Runtime::FunctionId fid, int num_arguments)
 
void TailCallRuntime (Runtime::FunctionId fid)
 
void JumpToExternalReference (const ExternalReference &builtin, bool builtin_exit_frame=false)
 
void LoadWeakValue (Register out, Register in, Label *target_if_cleared)
 
void IncrementCounter (StatsCounter *counter, int value, Register scratch1, Register scratch2)
 
void EmitIncrementCounter (StatsCounter *counter, int value, Register scratch1, Register scratch2)
 
void DecrementCounter (StatsCounter *counter, int value, Register scratch1, Register scratch2)
 
void EmitDecrementCounter (StatsCounter *counter, int value, Register scratch1, Register scratch2)
 
void LoadStackLimit (Register destination, StackLimitKind kind)
 
void StackOverflowCheck (Register num_args, Register scratch1, Register scratch2, Label *stack_overflow, Label *done=nullptr)
 
void SmiScale (Register dst, Register src, int scale)
 
void SmiTst (Register value, Register scratch)
 
void DropArguments (Register count)
 
void DropArgumentsAndPushNewReceiver (Register argc, Register receiver)
 
void JumpIfCodeIsMarkedForDeoptimization (Register code, Register scratch, Label *if_marked_for_deoptimization)
 
Operand ClearedValue () const
 
void JumpIfNotSmi (Register value, Label *not_smi_label, Label::Distance dist=Label::kFar)
 
void AssertConstructor (Register object)
 
void AssertFunction (Register object)
 
void AssertCallableFunction (Register object)
 
void AssertBoundFunction (Register object)
 
void AssertGeneratorObject (Register object)
 
void Assert (Condition cond, AbortReason reason) NOOP_UNLESS_DEBUG_CODE
 
void AssertUnreachable (AbortReason reason) NOOP_UNLESS_DEBUG_CODE
 
void AssertUndefinedOrAllocationSite (Register object, Register scratch)
 
template<typename Field >
void DecodeField (Register dst, Register src)
 
template<typename Field >
void DecodeField (Register reg)
 
void LoadProtectedPointerField (Register destination, MemOperand field_operand)
 
void TryInlineTruncateDoubleToI (Register result, DoubleRegister input, Label *done)
 
void CallBuiltin (Builtin builtin, Condition cond=al)
 
void TailCallBuiltin (Builtin builtin, Condition cond=al)
 
void AtomicCmpExchangeHelper (Register addr, Register output, Register old_value, Register new_value, int start, int end, int shift_amount, int offset, Register temp0, Register temp1)
 
void AtomicCmpExchangeU8 (Register addr, Register output, Register old_value, Register new_value, Register temp0, Register temp1)
 
void AtomicCmpExchangeU16 (Register addr, Register output, Register old_value, Register new_value, Register temp0, Register temp1)
 
void AtomicExchangeHelper (Register addr, Register value, Register output, int start, int end, int shift_amount, int offset, Register scratch)
 
void AtomicExchangeU8 (Register addr, Register value, Register output, Register scratch)
 
void AtomicExchangeU16 (Register addr, Register value, Register output, Register scratch)
 
void DoubleMax (DoubleRegister result_reg, DoubleRegister left_reg, DoubleRegister right_reg)
 
void DoubleMin (DoubleRegister result_reg, DoubleRegister left_reg, DoubleRegister right_reg)
 
void FloatMax (DoubleRegister result_reg, DoubleRegister left_reg, DoubleRegister right_reg)
 
void FloatMin (DoubleRegister result_reg, DoubleRegister left_reg, DoubleRegister right_reg)
 
void CeilF32 (DoubleRegister dst, DoubleRegister src)
 
void CeilF64 (DoubleRegister dst, DoubleRegister src)
 
void FloorF32 (DoubleRegister dst, DoubleRegister src)
 
void FloorF64 (DoubleRegister dst, DoubleRegister src)
 
void TruncF32 (DoubleRegister dst, DoubleRegister src)
 
void TruncF64 (DoubleRegister dst, DoubleRegister src)
 
void NearestIntF32 (DoubleRegister dst, DoubleRegister src)
 
void NearestIntF64 (DoubleRegister dst, DoubleRegister src)
 
void LoadFromConstantsTable (Register destination, int constant_index) final
 
void LoadRootRegisterOffset (Register destination, intptr_t offset) final
 
void LoadRootRelative (Register destination, int32_t offset) final
 
void StoreRootRelative (int32_t offset, Register value) final
 
MemOperand ExternalReferenceAsOperand (ExternalReference reference, Register scratch)
 
MemOperand ExternalReferenceAsOperand (IsolateFieldId id)
 
void Jump (Register target, Condition cond=al)
 
void Jump (Address target, RelocInfo::Mode rmode, Condition cond=al)
 
void Jump (Handle< Code > code, RelocInfo::Mode rmode, Condition cond=al)
 
void Jump (const ExternalReference &reference)
 
void JumpIfSmi (Register value, Label *smi_label)
 
Condition CheckSmi (Register src)
 
void JumpIfEqual (Register x, int32_t y, Label *dest)
 
void JumpIfLessThan (Register x, int32_t y, Label *dest)
 
void Switch (Register scrach, Register reg, int case_base_value, Label **labels, int num_labels)
 
void JumpIfCodeIsMarkedForDeoptimization (Register code, Register scratch, Label *if_marked_for_deoptimization)
 
void JumpIfCodeIsTurbofanned (Register code, Register scratch, Label *if_turbofanned)
 
void LoadMap (Register destination, Register object)
 
void LoadCompressedMap (Register destination, Register object)
 
void LoadFeedbackVector (Register dst, Register closure, Register scratch, Label *fbv_undef)
 
void Call (Register target)
 
void Call (Address target, RelocInfo::Mode rmode, Condition cond=al)
 
void Call (Handle< Code > code, RelocInfo::Mode rmode=RelocInfo::CODE_TARGET, Condition cond=al)
 
void Ret ()
 
void Ret (Condition cond)
 
void BailoutIfDeoptimized (Register scratch)
 
void CallForDeoptimization (Builtin target, int deopt_id, Label *exit, DeoptimizeKind kind, Label *ret, Label *jump_deoptimization_entry_label)
 
void Drop (int count)
 
void Drop (Register count, Register scratch=r0)
 
void Ret (int drop)
 
void Call (Label *target)
 
void GetLabelAddress (Register dst, Label *target)
 
void LoadEntryFromBuiltinIndex (Register builtin_index, Register target)
 
void LoadEntryFromBuiltin (Builtin builtin, Register destination)
 
MemOperand EntryFromBuiltinAsOperand (Builtin builtin)
 
void LoadCodeInstructionStart (Register destination, Register code_object, CodeEntrypointTag tag=kDefaultCodeEntrypointTag)
 
void CallCodeObject (Register code_object)
 
void JumpCodeObject (Register code_object, JumpMode jump_mode=JumpMode::kJump)
 
void CallBuiltinByIndex (Register builtin_index, Register target)
 
void Move (Register dst, Tagged< Smi > smi)
 
void Move (Register dst, Handle< HeapObject > source, RelocInfo::Mode rmode=RelocInfo::FULL_EMBEDDED_OBJECT)
 
void Move (Register dst, ExternalReference reference)
 
void LoadIsolateField (Register dst, IsolateFieldId id)
 
void Move (Register dst, const MemOperand &src)
 
void Move (Register dst, Register src, Condition cond=al)
 
void Move (DoubleRegister dst, DoubleRegister src)
 
void MoveChar (const MemOperand &opnd1, const MemOperand &opnd2, const Operand &length)
 
void CompareLogicalChar (const MemOperand &opnd1, const MemOperand &opnd2, const Operand &length)
 
void ExclusiveOrChar (const MemOperand &opnd1, const MemOperand &opnd2, const Operand &length)
 
void RotateInsertSelectBits (Register dst, Register src, const Operand &startBit, const Operand &endBit, const Operand &shiftAmt, bool zeroBits)
 
void BranchRelativeOnIdxHighP (Register dst, Register inc, Label *L)
 
void MaybeSaveRegisters (RegList registers)
 
void MaybeRestoreRegisters (RegList registers)
 
void CallEphemeronKeyBarrier (Register object, Register slot_address, SaveFPRegsMode fp_mode)
 
void CallRecordWriteStubSaveRegisters (Register object, Register slot_address, SaveFPRegsMode fp_mode, StubCallMode mode=StubCallMode::kCallBuiltinPointer)
 
void CallRecordWriteStub (Register object, Register slot_address, SaveFPRegsMode fp_mode, StubCallMode mode=StubCallMode::kCallBuiltinPointer)
 
void MultiPush (RegList regs, Register location=sp)
 
void MultiPop (RegList regs, Register location=sp)
 
void MultiPushDoubles (DoubleRegList dregs, Register location=sp)
 
void MultiPopDoubles (DoubleRegList dregs, Register location=sp)
 
void MultiPushV128 (DoubleRegList dregs, Register scratch, Register location=sp)
 
void MultiPopV128 (DoubleRegList dregs, Register scratch, Register location=sp)
 
void MultiPushF64OrV128 (DoubleRegList dregs, Register scratch, Register location=sp)
 
void MultiPopF64OrV128 (DoubleRegList dregs, Register scratch, Register location=sp)
 
void PushAll (RegList registers)
 
void PopAll (RegList registers)
 
void PushAll (DoubleRegList registers, int stack_slot_size=kDoubleSize)
 
void PopAll (DoubleRegList registers, int stack_slot_size=kDoubleSize)
 
int RequiredStackSizeForCallerSaved (SaveFPRegsMode fp_mode, Register exclusion1=no_reg, Register exclusion2=no_reg, Register exclusion3=no_reg) const
 
int PushCallerSaved (SaveFPRegsMode fp_mode, Register scratch, Register exclusion1=no_reg, Register exclusion2=no_reg, Register exclusion3=no_reg)
 
int PopCallerSaved (SaveFPRegsMode fp_mode, Register scratch, Register exclusion1=no_reg, Register exclusion2=no_reg, Register exclusion3=no_reg)
 
void LoadRoot (Register destination, RootIndex index) override
 
void LoadRoot (Register destination, RootIndex index, Condition cond)
 
void LoadTaggedRoot (Register destination, RootIndex index)
 
void AddS32 (Register dst, const Operand &imm)
 
void AddS64 (Register dst, const Operand &imm)
 
void AddS32 (Register dst, Register src, const Operand &imm)
 
void AddS64 (Register dst, Register src, const Operand &imm)
 
void AddS32 (Register dst, Register src, int32_t imm)
 
void AddS64 (Register dst, Register src, int32_t imm)
 
void AddS32 (Register dst, Register src)
 
void AddS64 (Register dst, Register src)
 
void AddS32 (Register dst, Register src1, Register src2)
 
void AddS64 (Register dst, Register src1, Register src2)
 
void AddS32 (Register dst, const MemOperand &opnd)
 
void AddS64 (Register dst, const MemOperand &opnd)
 
void AddS32 (const MemOperand &opnd, const Operand &imm)
 
void AddS64 (const MemOperand &opnd, const Operand &imm)
 
void AddU32 (Register dst, Register src1, Register src2)
 
void AddU32 (Register dst, const Operand &imm)
 
void AddU64 (Register dst, const Operand &imm)
 
void AddU64 (Register dst, int imm)
 
void AddU64 (Register dst, Register src1, Register src2)
 
void AddU64 (Register dst, Register src)
 
void AddU32 (Register dst, const MemOperand &opnd)
 
void AddU64 (Register dst, const MemOperand &opnd)
 
void SubS32 (Register dst, const Operand &imm)
 
void SubS64 (Register dst, const Operand &imm)
 
void SubS32 (Register dst, Register src, const Operand &imm)
 
void SubS64 (Register dst, Register src, const Operand &imm)
 
void SubS32 (Register dst, Register src, int32_t imm)
 
void SubS64 (Register dst, Register src, int32_t imm)
 
void SubS32 (Register dst, Register src)
 
void SubS64 (Register dst, Register src)
 
void SubS32 (Register dst, Register src1, Register src2)
 
void SubS64 (Register dst, Register src1, Register src2)
 
void SubS32 (Register dst, const MemOperand &opnd)
 
void SubS64 (Register dst, const MemOperand &opnd)
 
void LoadAndSub32 (Register dst, Register src, const MemOperand &opnd)
 
void LoadAndSub64 (Register dst, Register src, const MemOperand &opnd)
 
void SubU32 (Register dst, const MemOperand &opnd)
 
void SubU64 (Register dst, const MemOperand &opnd)
 
void SubU32 (Register dst, Register src1, Register src2)
 
void MulS64 (Register dst, const Operand &opnd)
 
void MulS64 (Register dst, Register src)
 
void MulS64 (Register dst, const MemOperand &opnd)
 
void MulS64 (Register dst, Register src1, Register src2)
 
void MulS32 (Register dst, const MemOperand &src1)
 
void MulS32 (Register dst, Register src1)
 
void MulS32 (Register dst, const Operand &src1)
 
void MulS32 (Register dst, Register src1, Register src2)
 
void MulHighS64 (Register dst, Register src1, Register src2)
 
void MulHighS64 (Register dst, Register src1, const MemOperand &src2)
 
void MulHighU64 (Register dst, Register src1, Register src2)
 
void MulHighU64 (Register dst, Register src1, const MemOperand &src2)
 
void MulHighS32 (Register dst, Register src1, const MemOperand &src2)
 
void MulHighS32 (Register dst, Register src1, Register src2)
 
void MulHighS32 (Register dst, Register src1, const Operand &src2)
 
void MulHighU32 (Register dst, Register src1, const MemOperand &src2)
 
void MulHighU32 (Register dst, Register src1, Register src2)
 
void MulHighU32 (Register dst, Register src1, const Operand &src2)
 
void Mul32WithOverflowIfCCUnequal (Register dst, Register src1, const MemOperand &src2)
 
void Mul32WithOverflowIfCCUnequal (Register dst, Register src1, Register src2)
 
void Mul32WithOverflowIfCCUnequal (Register dst, Register src1, const Operand &src2)
 
void DivS32 (Register dst, Register src1, const MemOperand &src2)
 
void DivS32 (Register dst, Register src1, Register src2)
 
void DivU32 (Register dst, Register src1, const MemOperand &src2)
 
void DivU32 (Register dst, Register src1, Register src2)
 
void DivS64 (Register dst, Register src1, const MemOperand &src2)
 
void DivS64 (Register dst, Register src1, Register src2)
 
void DivU64 (Register dst, Register src1, const MemOperand &src2)
 
void DivU64 (Register dst, Register src1, Register src2)
 
void ModS32 (Register dst, Register src1, const MemOperand &src2)
 
void ModS32 (Register dst, Register src1, Register src2)
 
void ModU32 (Register dst, Register src1, const MemOperand &src2)
 
void ModU32 (Register dst, Register src1, Register src2)
 
void ModS64 (Register dst, Register src1, const MemOperand &src2)
 
void ModS64 (Register dst, Register src1, Register src2)
 
void ModU64 (Register dst, Register src1, const MemOperand &src2)
 
void ModU64 (Register dst, Register src1, Register src2)
 
void Sqrt (DoubleRegister result, DoubleRegister input)
 
void Sqrt (DoubleRegister result, const MemOperand &input)
 
void CmpS32 (Register src1, Register src2)
 
void CmpS64 (Register src1, Register src2)
 
void CmpS32 (Register dst, const Operand &opnd)
 
void CmpS64 (Register dst, const Operand &opnd)
 
void CmpS32 (Register dst, const MemOperand &opnd)
 
void CmpS64 (Register dst, const MemOperand &opnd)
 
void CmpAndSwap (Register old_val, Register new_val, const MemOperand &opnd)
 
void CmpAndSwap64 (Register old_val, Register new_val, const MemOperand &opnd)
 
template<class T >
void CmpP (Register src1, T src2)
 
void CmpU32 (Register src1, Register src2)
 
void CmpU64 (Register src1, Register src2)
 
void CmpU32 (Register src1, const Operand &opnd)
 
void CmpU64 (Register src1, const Operand &opnd)
 
void CmpU32 (Register dst, const MemOperand &opnd)
 
void CmpU64 (Register dst, const MemOperand &opnd)
 
void CmpF32 (DoubleRegister src1, DoubleRegister src2)
 
void CmpF64 (DoubleRegister src1, DoubleRegister src2)
 
void CmpF32 (DoubleRegister src1, const MemOperand &src2)
 
void CmpF64 (DoubleRegister src1, const MemOperand &src2)
 
void LoadU64 (Register dst, const MemOperand &mem, Register scratch=no_reg)
 
void LoadS32 (Register dst, const MemOperand &opnd, Register scratch=no_reg)
 
void LoadS32 (Register dst, Register src)
 
void LoadU32 (Register dst, const MemOperand &opnd, Register scratch=no_reg)
 
void LoadU32 (Register dst, Register src)
 
void LoadU16 (Register dst, const MemOperand &opnd)
 
void LoadU16 (Register dst, Register src)
 
void LoadS16 (Register dst, Register src)
 
void LoadS16 (Register dst, const MemOperand &mem, Register scratch=no_reg)
 
void LoadS8 (Register dst, const MemOperand &opnd)
 
void LoadS8 (Register dst, Register src)
 
void LoadU8 (Register dst, const MemOperand &opnd)
 
void LoadU8 (Register dst, Register src)
 
void LoadV128 (Simd128Register dst, const MemOperand &mem, Register scratch)
 
void LoadF64 (DoubleRegister dst, const MemOperand &opnd)
 
void LoadF32 (DoubleRegister dst, const MemOperand &opnd)
 
void LoadU64LE (Register dst, const MemOperand &mem, Register scratch=no_reg)
 
void LoadS32LE (Register dst, const MemOperand &opnd, Register scratch=no_reg)
 
void LoadU32LE (Register dst, const MemOperand &opnd, Register scratch=no_reg)
 
void LoadU16LE (Register dst, const MemOperand &opnd)
 
void LoadS16LE (Register dst, const MemOperand &opnd)
 
void LoadV128LE (DoubleRegister dst, const MemOperand &mem, Register scratch0, Register scratch1)
 
void LoadF64LE (DoubleRegister dst, const MemOperand &opnd, Register scratch)
 
void LoadF32LE (DoubleRegister dst, const MemOperand &opnd, Register scratch)
 
void LoadAndSplat64x2LE (Simd128Register dst, const MemOperand &mem, Register scratch)
 
void LoadAndSplat32x4LE (Simd128Register dst, const MemOperand &mem, Register scratch)
 
void LoadAndSplat16x8LE (Simd128Register dst, const MemOperand &me, Register scratch)
 
void LoadAndSplat8x16LE (Simd128Register dst, const MemOperand &mem, Register scratch)
 
void LoadAndExtend8x8ULE (Simd128Register dst, const MemOperand &mem, Register scratch)
 
void LoadAndExtend8x8SLE (Simd128Register dst, const MemOperand &mem, Register scratch)
 
void LoadAndExtend16x4ULE (Simd128Register dst, const MemOperand &mem, Register scratch)
 
void LoadAndExtend16x4SLE (Simd128Register dst, const MemOperand &mem, Register scratch)
 
void LoadAndExtend32x2ULE (Simd128Register dst, const MemOperand &mem, Register scratch)
 
void LoadAndExtend32x2SLE (Simd128Register dst, const MemOperand &mem, Register scratch)
 
void LoadV32ZeroLE (Simd128Register dst, const MemOperand &mem, Register scratch)
 
void LoadV64ZeroLE (Simd128Register dst, const MemOperand &mem, Register scratch)
 
void LoadLane8LE (Simd128Register dst, const MemOperand &mem, int lane, Register scratch)
 
void LoadLane16LE (Simd128Register dst, const MemOperand &mem, int lane, Register scratch)
 
void LoadLane32LE (Simd128Register dst, const MemOperand &mem, int lane, Register scratch)
 
void LoadLane64LE (Simd128Register dst, const MemOperand &mem, int lane, Register scratch)
 
void StoreLane8LE (Simd128Register src, const MemOperand &mem, int lane, Register scratch)
 
void StoreLane16LE (Simd128Register src, const MemOperand &mem, int lane, Register scratch)
 
void StoreLane32LE (Simd128Register src, const MemOperand &mem, int lane, Register scratch)
 
void StoreLane64LE (Simd128Register src, const MemOperand &mem, int lane, Register scratch)
 
void LoadAndTest32 (Register dst, Register src)
 
void LoadAndTestP (Register dst, Register src)
 
void LoadAndTest32 (Register dst, const MemOperand &opnd)
 
void LoadAndTestP (Register dst, const MemOperand &opnd)
 
void StoreU64 (const MemOperand &mem, const Operand &opnd, Register scratch=no_reg)
 
void StoreU64 (Register src, const MemOperand &mem, Register scratch=no_reg)
 
void StoreU32 (Register src, const MemOperand &mem, Register scratch=no_reg)
 
void StoreU16 (Register src, const MemOperand &mem, Register scratch=r0)
 
void StoreU8 (Register src, const MemOperand &mem, Register scratch=r0)
 
void StoreF64 (DoubleRegister dst, const MemOperand &opnd)
 
void StoreF32 (DoubleRegister dst, const MemOperand &opnd)
 
void StoreV128 (Simd128Register src, const MemOperand &mem, Register scratch)
 
void StoreU64LE (Register src, const MemOperand &mem, Register scratch=no_reg)
 
void StoreU32LE (Register src, const MemOperand &mem, Register scratch=no_reg)
 
void StoreU16LE (Register src, const MemOperand &mem, Register scratch=r0)
 
void StoreF64LE (DoubleRegister src, const MemOperand &opnd, Register scratch)
 
void StoreF32LE (DoubleRegister src, const MemOperand &opnd, Register scratch)
 
void StoreV128LE (Simd128Register src, const MemOperand &mem, Register scratch1, Register scratch2)
 
void AddF32 (DoubleRegister dst, DoubleRegister lhs, DoubleRegister rhs)
 
void SubF32 (DoubleRegister dst, DoubleRegister lhs, DoubleRegister rhs)
 
void MulF32 (DoubleRegister dst, DoubleRegister lhs, DoubleRegister rhs)
 
void DivF32 (DoubleRegister dst, DoubleRegister lhs, DoubleRegister rhs)
 
void AddF64 (DoubleRegister dst, DoubleRegister lhs, DoubleRegister rhs)
 
void SubF64 (DoubleRegister dst, DoubleRegister lhs, DoubleRegister rhs)
 
void MulF64 (DoubleRegister dst, DoubleRegister lhs, DoubleRegister rhs)
 
void DivF64 (DoubleRegister dst, DoubleRegister lhs, DoubleRegister rhs)
 
void AddFloat32 (DoubleRegister dst, const MemOperand &opnd, DoubleRegister scratch)
 
void AddFloat64 (DoubleRegister dst, const MemOperand &opnd, DoubleRegister scratch)
 
void SubFloat32 (DoubleRegister dst, const MemOperand &opnd, DoubleRegister scratch)
 
void SubFloat64 (DoubleRegister dst, const MemOperand &opnd, DoubleRegister scratch)
 
void MulFloat32 (DoubleRegister dst, const MemOperand &opnd, DoubleRegister scratch)
 
void MulFloat64 (DoubleRegister dst, const MemOperand &opnd, DoubleRegister scratch)
 
void DivFloat32 (DoubleRegister dst, const MemOperand &opnd, DoubleRegister scratch)
 
void DivFloat64 (DoubleRegister dst, const MemOperand &opnd, DoubleRegister scratch)
 
void LoadF32AsF64 (DoubleRegister dst, const MemOperand &opnd)
 
void LoadOnConditionP (Condition cond, Register dst, Register src)
 
void LoadPositiveP (Register result, Register input)
 
void LoadPositive32 (Register result, Register input)
 
void Branch (Condition c, const Operand &opnd)
 
void BranchOnCount (Register r1, Label *l)
 
void ShiftLeftU32 (Register dst, Register src, Register val, const Operand &val2=Operand::Zero())
 
void ShiftLeftU32 (Register dst, Register src, const Operand &val)
 
void ShiftLeftU64 (Register dst, Register src, Register val, const Operand &val2=Operand::Zero())
 
void ShiftLeftU64 (Register dst, Register src, const Operand &val)
 
void ShiftRightU32 (Register dst, Register src, Register val, const Operand &val2=Operand::Zero())
 
void ShiftRightU32 (Register dst, Register src, const Operand &val)
 
void ShiftRightU64 (Register dst, Register src, Register val, const Operand &val2=Operand::Zero())
 
void ShiftRightU64 (Register dst, Register src, const Operand &val)
 
void ShiftRightS32 (Register dst, Register src, Register shift, const Operand &val2=Operand::Zero())
 
void ShiftRightS32 (Register dst, Register src, const Operand &val)
 
void ShiftRightS64 (Register dst, Register src, Register shift, const Operand &val2=Operand::Zero())
 
void ShiftRightS64 (Register dst, Register src, const Operand &val)
 
void ClearRightImm (Register dst, Register src, const Operand &val)
 
void And (Register dst, Register src)
 
void AndP (Register dst, Register src)
 
void And (Register dst, Register src1, Register src2)
 
void AndP (Register dst, Register src1, Register src2)
 
void And (Register dst, const MemOperand &opnd)
 
void AndP (Register dst, const MemOperand &opnd)
 
void And (Register dst, const Operand &opnd)
 
void AndP (Register dst, const Operand &opnd)
 
void And (Register dst, Register src, const Operand &opnd)
 
void AndP (Register dst, Register src, const Operand &opnd)
 
void Or (Register dst, Register src)
 
void OrP (Register dst, Register src)
 
void Or (Register dst, Register src1, Register src2)
 
void OrP (Register dst, Register src1, Register src2)
 
void Or (Register dst, const MemOperand &opnd)
 
void OrP (Register dst, const MemOperand &opnd)
 
void Or (Register dst, const Operand &opnd)
 
void OrP (Register dst, const Operand &opnd)
 
void Or (Register dst, Register src, const Operand &opnd)
 
void OrP (Register dst, Register src, const Operand &opnd)
 
void Xor (Register dst, Register src)
 
void XorP (Register dst, Register src)
 
void Xor (Register dst, Register src1, Register src2)
 
void XorP (Register dst, Register src1, Register src2)
 
void Xor (Register dst, const MemOperand &opnd)
 
void XorP (Register dst, const MemOperand &opnd)
 
void Xor (Register dst, const Operand &opnd)
 
void XorP (Register dst, const Operand &opnd)
 
void Xor (Register dst, Register src, const Operand &opnd)
 
void XorP (Register dst, Register src, const Operand &opnd)
 
void Popcnt32 (Register dst, Register src)
 
void Not32 (Register dst, Register src=no_reg)
 
void Not64 (Register dst, Register src=no_reg)
 
void NotP (Register dst, Register src=no_reg)
 
void Popcnt64 (Register dst, Register src)
 
void mov (Register dst, const Operand &src)
 
void mov (Register dst, Register src)
 
void push (DoubleRegister src)
 
void push (Register src)
 
void pop (DoubleRegister dst)
 
void pop (Register dst)
 
void pop ()
 
void Push (Register src)
 
void Push (Handle< HeapObject > handle)
 
void Push (Tagged< Smi > smi)
 
void Push (Tagged< TaggedIndex > index)
 
void Push (Register src1, Register src2)
 
void Push (Register src1, Register src2, Register src3)
 
void Push (Register src1, Register src2, Register src3, Register src4)
 
void Push (Register src1, Register src2, Register src3, Register src4, Register src5)
 
void PushArray (Register array, Register size, Register scratch, Register scratch2, PushArrayOrder order=kNormal)
 
void Pop (Register dst)
 
void Pop (Register src1, Register src2)
 
void Pop (Register src1, Register src2, Register src3)
 
void Pop (Register src1, Register src2, Register src3, Register src4)
 
void Pop (Register src1, Register src2, Register src3, Register src4, Register src5)
 
void PushCommonFrame (Register marker_reg=no_reg)
 
void PushStandardFrame (Register function_reg)
 
void PopCommonFrame (Register marker_reg=no_reg)
 
void RestoreFrameStateForTailCall ()
 
void InitializeRootRegister ()
 
void CanonicalizeNaN (const DoubleRegister dst, const DoubleRegister src)
 
void CanonicalizeNaN (const DoubleRegister value)
 
void ConvertIntToDouble (DoubleRegister dst, Register src)
 
void ConvertUnsignedIntToDouble (DoubleRegister dst, Register src)
 
void ConvertIntToFloat (DoubleRegister dst, Register src)
 
void ConvertUnsignedIntToFloat (DoubleRegister dst, Register src)
 
void ConvertInt64ToFloat (DoubleRegister double_dst, Register src)
 
void ConvertInt64ToDouble (DoubleRegister double_dst, Register src)
 
void ConvertUnsignedInt64ToFloat (DoubleRegister double_dst, Register src)
 
void ConvertUnsignedInt64ToDouble (DoubleRegister double_dst, Register src)
 
void MovIntToFloat (DoubleRegister dst, Register src)
 
void MovFloatToInt (Register dst, DoubleRegister src)
 
void MovDoubleToInt64 (Register dst, DoubleRegister src)
 
void MovInt64ToDouble (DoubleRegister dst, Register src)
 
void ConvertFloat32ToInt64 (const Register dst, const DoubleRegister double_input, FPRoundingMode rounding_mode=kRoundToZero)
 
void ConvertDoubleToInt64 (const Register dst, const DoubleRegister double_input, FPRoundingMode rounding_mode=kRoundToZero)
 
void ConvertDoubleToInt32 (const Register dst, const DoubleRegister double_input, FPRoundingMode rounding_mode=kRoundToZero)
 
void ConvertFloat32ToInt32 (const Register result, const DoubleRegister double_input, FPRoundingMode rounding_mode)
 
void ConvertFloat32ToUnsignedInt32 (const Register result, const DoubleRegister double_input, FPRoundingMode rounding_mode=kRoundToZero)
 
void ConvertDoubleToUnsignedInt64 (const Register dst, const DoubleRegister double_input, FPRoundingMode rounding_mode=kRoundToZero)
 
void ConvertDoubleToUnsignedInt32 (const Register dst, const DoubleRegister double_input, FPRoundingMode rounding_mode=kRoundToZero)
 
void ConvertFloat32ToUnsignedInt64 (const Register result, const DoubleRegister double_input, FPRoundingMode rounding_mode=kRoundToZero)
 
void StubPrologue (StackFrame::Type type, Register base=no_reg, int prologue_offset=0)
 
void Prologue (Register base, int prologue_offset=0)
 
void DropArguments (Register count)
 
void DropArgumentsAndPushNewReceiver (Register argc, Register receiver)
 
void LoadSmiLiteral (Register dst, Tagged< Smi > smi)
 
template<class T >
void LoadF64 (DoubleRegister result, T value, Register scratch)
 
template<class T >
void LoadF32 (DoubleRegister result, T value, Register scratch)
 
void CmpSmiLiteral (Register src1, Tagged< Smi > smi, Register scratch)
 
void SetRoundingMode (FPRoundingMode RN)
 
void ResetRoundingMode ()
 
void LoadMultipleP (Register dst1, Register dst2, const MemOperand &mem)
 
void StoreMultipleP (Register dst1, Register dst2, const MemOperand &mem)
 
void LoadMultipleW (Register dst1, Register dst2, const MemOperand &mem)
 
void StoreMultipleW (Register dst1, Register dst2, const MemOperand &mem)
 
void SwapP (Register src, Register dst, Register scratch)
 
void SwapP (Register src, MemOperand dst, Register scratch)
 
void SwapP (MemOperand src, MemOperand dst, Register scratch_0, Register scratch_1)
 
void SwapFloat32 (DoubleRegister src, DoubleRegister dst, DoubleRegister scratch)
 
void SwapFloat32 (DoubleRegister src, MemOperand dst, DoubleRegister scratch)
 
void SwapFloat32 (MemOperand src, MemOperand dst, DoubleRegister scratch)
 
void SwapDouble (DoubleRegister src, DoubleRegister dst, DoubleRegister scratch)
 
void SwapDouble (DoubleRegister src, MemOperand dst, DoubleRegister scratch)
 
void SwapDouble (MemOperand src, MemOperand dst, DoubleRegister scratch)
 
void SwapSimd128 (Simd128Register src, Simd128Register dst, Simd128Register scratch)
 
void SwapSimd128 (Simd128Register src, MemOperand dst, Simd128Register scratch)
 
void SwapSimd128 (MemOperand src, MemOperand dst, Simd128Register scratch)
 
void PrepareCallCFunction (int num_reg_arguments, int num_double_registers, Register scratch)
 
void PrepareCallCFunction (int num_reg_arguments, Register scratch)
 
void MovToFloatParameter (DoubleRegister src)
 
void MovToFloatParameters (DoubleRegister src1, DoubleRegister src2)
 
void MovToFloatResult (DoubleRegister src)
 
int CallCFunction (ExternalReference function, int num_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, bool has_function_descriptor=ABI_USES_FUNCTION_DESCRIPTORS, Label *return_label=nullptr)
 
int CallCFunction (Register function, int num_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, bool has_function_descriptor=ABI_USES_FUNCTION_DESCRIPTORS, Label *return_label=nullptr)
 
int CallCFunction (ExternalReference function, int num_reg_arguments, int num_double_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, bool has_function_descriptor=ABI_USES_FUNCTION_DESCRIPTORS, Label *return_label=nullptr)
 
int CallCFunction (Register function, int num_reg_arguments, int num_double_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, bool has_function_descriptor=ABI_USES_FUNCTION_DESCRIPTORS, Label *return_label=nullptr)
 
void MovFromFloatParameter (DoubleRegister dst)
 
void MovFromFloatResult (DoubleRegister dst)
 
void Trap ()
 
void DebugBreak ()
 
void TruncateDoubleToI (Isolate *isolate, Zone *zone, Register result, DoubleRegister double_input, StubCallMode stub_mode)
 
void TryInlineTruncateDoubleToI (Register result, DoubleRegister double_input, Label *done)
 
void Assert (Condition cond, AbortReason reason, CRegister cr=cr7) NOOP_UNLESS_DEBUG_CODE
 
void AssertUnreachable (AbortReason reason) NOOP_UNLESS_DEBUG_CODE
 
void AssertZeroExtended (Register reg) NOOP_UNLESS_DEBUG_CODE
 
void Check (Condition cond, AbortReason reason, CRegister cr=cr7)
 
void Abort (AbortReason reason)
 
void ExtractBitRange (Register dst, Register src, int rangeStart, int rangeEnd)
 
void ExtractBit (Register dst, Register src, uint32_t bitNumber)
 
void ExtractBitMask (Register dst, Register src, uintptr_t mask, RCBit rc=LeaveRC)
 
void TestBit (Register value, int bitNumber, Register scratch=r0)
 
void TestBitRange (Register value, int rangeStart, int rangeEnd, Register scratch=r0)
 
void TestBitMask (Register value, uintptr_t mask, Register scratch=r0)
 
void TestIfSmi (Register value)
 
void TestIfSmi (MemOperand value)
 
void TestIfInt32 (Register value)
 
void SmiUntag (Register reg)
 
void SmiUntag (Register dst, const MemOperand &src)
 
void SmiUntag (Register dst, Register src)
 
void SmiToInt32 (Register smi)
 
void SmiToInt32 (Register dst, Register src)
 
void SmiTag (Register reg)
 
void SmiTag (Register dst, Register src)
 
void AssertNotSmi (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertSmi (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertMap (Register object) NOOP_UNLESS_DEBUG_CODE
 
void EnterFrame (StackFrame::Type type, bool load_constant_pool_pointer_reg=false)
 
int LeaveFrame (StackFrame::Type type, int stack_adjustment=0)
 
void AllocateStackSpace (int bytes)
 
void AllocateStackSpace (Register bytes)
 
void CheckPageFlag (Register object, Register scratch, int mask, Condition cc, Label *condition_met)
 
void ComputeCodeStartAddress (Register dst)
 
void LoadPC (Register dst)
 
void EnforceStackAlignment ()
 
void CodeEntry ()
 
void ExceptionHandler ()
 
void BindExceptionHandler (Label *label)
 
void CallJSFunction (Register function_object, uint16_t argument_count)
 
void JumpJSFunction (Register function_object, JumpMode jump_mode=JumpMode::kJump)
 
void StoreReturnAddressAndCall (Register target)
 
void F64x2Splat (Simd128Register dst, Simd128Register src)
 
void F32x4Splat (Simd128Register dst, Simd128Register src)
 
void I64x2Splat (Simd128Register dst, Register src)
 
void I32x4Splat (Simd128Register dst, Register src)
 
void I16x8Splat (Simd128Register dst, Register src)
 
void I8x16Splat (Simd128Register dst, Register src)
 
void F64x2ExtractLane (DoubleRegister dst, Simd128Register src, uint8_t imm_lane_idx, Register=r0)
 
void F32x4ExtractLane (DoubleRegister dst, Simd128Register src, uint8_t imm_lane_idx, Register=r0)
 
void I64x2ExtractLane (Register dst, Simd128Register src, uint8_t imm_lane_idx, Register=r0)
 
void I32x4ExtractLane (Register dst, Simd128Register src, uint8_t imm_lane_idx, Register=r0)
 
void I16x8ExtractLaneU (Register dst, Simd128Register src, uint8_t imm_lane_idx, Register=r0)
 
void I16x8ExtractLaneS (Register dst, Simd128Register src, uint8_t imm_lane_idx, Register scratch)
 
void I8x16ExtractLaneU (Register dst, Simd128Register src, uint8_t imm_lane_idx, Register=r0)
 
void I8x16ExtractLaneS (Register dst, Simd128Register src, uint8_t imm_lane_idx, Register scratch)
 
void F64x2ReplaceLane (Simd128Register dst, Simd128Register src1, DoubleRegister src2, uint8_t imm_lane_idx, Register scratch)
 
void F32x4ReplaceLane (Simd128Register dst, Simd128Register src1, DoubleRegister src2, uint8_t imm_lane_idx, Register scratch)
 
void I64x2ReplaceLane (Simd128Register dst, Simd128Register src1, Register src2, uint8_t imm_lane_idx, Register=r0)
 
void I32x4ReplaceLane (Simd128Register dst, Simd128Register src1, Register src2, uint8_t imm_lane_idx, Register=r0)
 
void I16x8ReplaceLane (Simd128Register dst, Simd128Register src1, Register src2, uint8_t imm_lane_idx, Register=r0)
 
void I8x16ReplaceLane (Simd128Register dst, Simd128Register src1, Register src2, uint8_t imm_lane_idx, Register=r0)
 
void I64x2Mul (Simd128Register dst, Simd128Register src1, Simd128Register src2, Register scratch1, Register scratch2, Register scratch3)
 
void I32x4GeU (Simd128Register dst, Simd128Register src1, Simd128Register src2, Simd128Register scratch)
 
void I16x8GeU (Simd128Register dst, Simd128Register src1, Simd128Register src2, Simd128Register scratch)
 
void I8x16GeU (Simd128Register dst, Simd128Register src1, Simd128Register src2, Simd128Register scratch)
 
void I64x2BitMask (Register dst, Simd128Register src, Register scratch1, Simd128Register scratch2)
 
void I32x4BitMask (Register dst, Simd128Register src, Register scratch1, Simd128Register scratch2)
 
void I16x8BitMask (Register dst, Simd128Register src, Register scratch1, Simd128Register scratch2)
 
void I8x16BitMask (Register dst, Simd128Register src, Register scratch1, Register scratch2, Simd128Register scratch3)
 
void V128AnyTrue (Register dst, Simd128Register src, Register scratch)
 
void I32x4SConvertF32x4 (Simd128Register dst, Simd128Register src, Simd128Register scratch1, Register scratch2)
 
void I32x4UConvertF32x4 (Simd128Register dst, Simd128Register src, Simd128Register scratch1, Register scratch2)
 
void F32x4SConvertI32x4 (Simd128Register dst, Simd128Register src, Simd128Register scratch1, Register scratch2)
 
void F32x4UConvertI32x4 (Simd128Register dst, Simd128Register src, Simd128Register scratch1, Register scratch2)
 
void I16x8SConvertI32x4 (Simd128Register dst, Simd128Register src1, Simd128Register src2)
 
void I8x16SConvertI16x8 (Simd128Register dst, Simd128Register src1, Simd128Register src2)
 
void I16x8UConvertI32x4 (Simd128Register dst, Simd128Register src1, Simd128Register src2, Simd128Register scratch)
 
void I8x16UConvertI16x8 (Simd128Register dst, Simd128Register src1, Simd128Register src2, Simd128Register scratch)
 
void F64x2PromoteLowF32x4 (Simd128Register dst, Simd128Register src, Simd128Register scratch1, Register scratch2, Register scratch3, Register scratch4)
 
void F32x4DemoteF64x2Zero (Simd128Register dst, Simd128Register src, Simd128Register scratch1, Register scratch2, Register scratch3, Register scratch4)
 
void I32x4TruncSatF64x2SZero (Simd128Register dst, Simd128Register src, Simd128Register scratch)
 
void I32x4TruncSatF64x2UZero (Simd128Register dst, Simd128Register src, Simd128Register scratch)
 
void I8x16Swizzle (Simd128Register dst, Simd128Register src1, Simd128Register src2, Register scratch1, Register scratch2, Simd128Register scratch3)
 
void S128Const (Simd128Register dst, uint64_t high, uint64_t low, Register scratch1, Register scratch2)
 
void I8x16Shuffle (Simd128Register dst, Simd128Register src1, Simd128Register src2, uint64_t high, uint64_t low, Register scratch1, Register scratch2, Simd128Register scratch3)
 
void I32x4DotI16x8S (Simd128Register dst, Simd128Register src1, Simd128Register src2, Simd128Register scratch)
 
void I16x8DotI8x16S (Simd128Register dst, Simd128Register src1, Simd128Register src2, Simd128Register scratch)
 
void I32x4DotI8x16AddS (Simd128Register dst, Simd128Register src1, Simd128Register src2, Simd128Register src3, Simd128Register scratch1, Simd128Register scratch2)
 
void I16x8Q15MulRSatS (Simd128Register dst, Simd128Register src1, Simd128Register src2, Simd128Register scratch1, Simd128Register scratch2, Simd128Register scratch3)
 
void S128Select (Simd128Register dst, Simd128Register src1, Simd128Register src2, Simd128Register mask)
 
void SmiToPtrArrayOffset (Register dst, Register src)
 
void LoadTaggedField (const Register &destination, const MemOperand &field_operand, const Register &scratch=no_reg)
 
void LoadTaggedSignedField (Register destination, MemOperand field_operand)
 
void LoadTaggedFieldWithoutDecompressing (const Register &destination, const MemOperand &field_operand, const Register &scratch=no_reg)
 
void SmiUntagField (Register dst, const MemOperand &src)
 
void StoreTaggedField (const Register &value, const MemOperand &dst_field_operand, const Register &scratch=no_reg)
 
void Zero (const MemOperand &dest)
 
void Zero (const MemOperand &dest1, const MemOperand &dest2)
 
void DecompressTaggedSigned (Register destination, MemOperand field_operand)
 
void DecompressTaggedSigned (Register destination, Register src)
 
void DecompressTagged (Register destination, MemOperand field_operand)
 
void DecompressTagged (Register destination, Register source)
 
void DecompressTagged (const Register &destination, Tagged_t immediate)
 
void CountLeadingZerosU32 (Register dst, Register src, Register scratch_pair=r0)
 
void CountLeadingZerosU64 (Register dst, Register src, Register scratch_pair=r0)
 
void CountTrailingZerosU32 (Register dst, Register src, Register scratch_pair=r0)
 
void CountTrailingZerosU64 (Register dst, Register src, Register scratch_pair=r0)
 
void LoadStackLimit (Register destination, StackLimitKind kind)
 
void LoadReceiver (Register dest)
 
void StoreReceiver (Register rec)
 
void CallRuntime (const Runtime::Function *f, int num_arguments)
 
void CallRuntime (Runtime::FunctionId fid)
 
void CallRuntime (Runtime::FunctionId fid, int num_arguments)
 
void TailCallRuntime (Runtime::FunctionId fid)
 
void IsObjectType (Register object, Register scratch1, Register scratch2, InstanceType type)
 
template<bool use_unsigned_cmp = false>
void CompareObjectType (Register heap_object, Register map, Register type_reg, InstanceType type)
 
void CompareObjectTypeRange (Register heap_object, Register map, Register type_reg, Register scratch, InstanceType lower_limit, InstanceType higher_limit)
 
template<bool use_unsigned_cmp = false>
void CompareInstanceType (Register map, Register type_reg, InstanceType type)
 
void CompareInstanceTypeRange (Register map, Register type_reg, Register scratch, InstanceType lower_limit, InstanceType higher_limit)
 
void CompareRoot (Register obj, RootIndex index)
 
void CompareTaggedRoot (Register obj, RootIndex index)
 
void PushRoot (RootIndex index)
 
template<class T >
void CompareTagged (Register src1, T src2)
 
void Cmp (Register dst, int32_t src)
 
void CmpTagged (const Register &src1, const Register &src2)
 
void JumpToExternalReference (const ExternalReference &builtin, bool builtin_exit_frame=false)
 
void JumpIfRoot (Register with, RootIndex index, Label *if_equal)
 
void JumpIfNotRoot (Register with, RootIndex index, Label *if_not_equal)
 
void CompareRange (Register value, Register scratch, unsigned lower_limit, unsigned higher_limit)
 
void JumpIfIsInRange (Register value, Register scratch, unsigned lower_limit, unsigned higher_limit, Label *on_in_range)
 
void LoadWeakValue (Register out, Register in, Label *target_if_cleared)
 
void IncrementCounter (StatsCounter *counter, int value, Register scratch1, Register scratch2)
 
void EmitIncrementCounter (StatsCounter *counter, int value, Register scratch1, Register scratch2)
 
void DecrementCounter (StatsCounter *counter, int value, Register scratch1, Register scratch2)
 
void EmitDecrementCounter (StatsCounter *counter, int value, Register scratch1, Register scratch2)
 
MemOperand StackLimitAsMemOperand (StackLimitKind kind)
 
void StackOverflowCheck (Register num_args, Register scratch, Label *stack_overflow)
 
void InvokeFunctionCode (Register function, Register new_target, Register expected_parameter_count, Register actual_parameter_count, InvokeType type)
 
void CheckDebugHook (Register fun, Register new_target, Register expected_parameter_count, Register actual_parameter_count)
 
void InvokeFunctionWithNewTarget (Register function, Register new_target, Register actual_parameter_count, InvokeType type)
 
void InvokeFunction (Register function, Register expected_parameter_count, Register actual_parameter_count, InvokeType type)
 
void PushStackHandler ()
 
void PopStackHandler ()
 
void EnterExitFrame (Register scratch, int stack_space, StackFrame::Type frame_type)
 
void LeaveExitFrame (Register scratch)
 
void LoadGlobalProxy (Register dst)
 
void LoadNativeContextSlot (Register dst, int index)
 
void TryLoadOptimizedOsrCode (Register scratch_and_result, CodeKind min_opt_level, Register feedback_vector, FeedbackSlot slot, Label *on_result, Label::Distance distance)
 
void JumpIfNotSmi (Register value, Label *not_smi_label)
 
void AssertConstructor (Register object, Register scratch) NOOP_UNLESS_DEBUG_CODE
 
void AssertFunction (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertCallableFunction (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertBoundFunction (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertGeneratorObject (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertUndefinedOrAllocationSite (Register object, Register scratch) NOOP_UNLESS_DEBUG_CODE
 
void AssertJSAny (Register object, Register map_tmp, Register tmp, AbortReason abort_reason) NOOP_UNLESS_DEBUG_CODE
 
template<typename Field >
void DecodeField (Register dst, Register src)
 
template<typename Field >
void DecodeField (Register reg)
 
void AssertFeedbackCell (Register object, Register scratch) NOOP_UNLESS_DEBUG_CODE
 
void AssertFeedbackVector (Register object, Register scratch) NOOP_UNLESS_DEBUG_CODE
 
void AssertFeedbackVector (Register object) NOOP_UNLESS_DEBUG_CODE
 
void GenerateTailCallToReturnedCode (Runtime::FunctionId function_id)
 
void ReplaceClosureCodeWithOptimizedCode (Register optimized_code, Register closure, Register scratch1, Register slot_address)
 
Condition LoadFeedbackVectorFlagsAndCheckIfNeedsProcessing (Register flags, Register feedback_vector, CodeKind current_code_kind)
 
void LoadFeedbackVectorFlagsAndJumpIfNeedsProcessing (Register flags, Register feedback_vector, CodeKind current_code_kind, Label *flags_need_processing)
 
void OptimizeCodeOrTailCallOptimizedCodeSlot (Register flags, Register feedback_vector)
 
void IncrementalMarkingRecordWriteHelper (Register object, Register value, Register address)
 
void CallJSEntry (Register target)
 
void RecordWriteField (Register object, int offset, Register value, Register slot_address, LinkRegisterStatus lr_status, SaveFPRegsMode save_fp, SmiCheck smi_check=SmiCheck::kInline)
 
void RecordWrite (Register object, Register slot_address, Register value, LinkRegisterStatus lr_status, SaveFPRegsMode save_fp, SmiCheck smi_check=SmiCheck::kInline)
 
void TestCodeIsMarkedForDeoptimization (Register code, Register scratch)
 
Operand ClearedValue () const
 
void PushReturnAddressFrom (Register src)
 
void PopReturnAddressTo (Register dst)
 
void Ret ()
 
void IncsspqIfSupported (Register number_of_words, Register scratch)
 
void Ret (int bytes_dropped, Register scratch)
 
Operand RootAsOperand (RootIndex index)
 
void LoadTaggedRoot (Register destination, RootIndex index)
 
void LoadRoot (Register destination, RootIndex index) final
 
void LoadRoot (Operand destination, RootIndex index)
 
void Push (Register src)
 
void Push (Operand src)
 
void Push (Immediate value)
 
void Push (Tagged< Smi > smi)
 
void Push (Tagged< TaggedIndex > index)
 
void Push (Handle< HeapObject > source)
 
void PushArray (Register array, Register size, Register scratch, PushArrayOrder order=PushArrayOrder::kNormal)
 
void PrepareCallCFunction (int num_arguments)
 
int CallCFunction (ExternalReference function, int num_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, Label *return_location=nullptr)
 
int CallCFunction (Register function, int num_arguments, SetIsolateDataSlots set_isolate_data_slots=SetIsolateDataSlots::kYes, Label *return_location=nullptr, CodeSandboxingMode target_sandboxing_mode=CodeSandboxingMode::kUnsandboxed)
 
void MemoryChunkHeaderFromObject (Register object, Register header)
 
void CheckPageFlag (Register object, Register scratch, int mask, Condition cc, Label *condition_met, Label::Distance condition_met_distance=Label::kFar)
 
void CheckMarkBit (Register object, Register scratch0, Register scratch1, Condition cc, Label *condition_met, Label::Distance condition_met_distance=Label::kFar)
 
void JumpIfMarking (Label *is_marking, Label::Distance condition_met_distance=Label::kFar)
 
void JumpIfNotMarking (Label *not_marking, Label::Distance condition_met_distance=Label::kFar)
 
void Movq (XMMRegister dst, Register src)
 
void Movq (Register dst, XMMRegister src)
 
void Cvtss2sd (XMMRegister dst, XMMRegister src)
 
void Cvtss2sd (XMMRegister dst, Operand src)
 
void Cvtsd2ss (XMMRegister dst, XMMRegister src)
 
void Cvtsd2ss (XMMRegister dst, Operand src)
 
void Cvttsd2si (Register dst, XMMRegister src)
 
void Cvttsd2si (Register dst, Operand src)
 
void Cvttsd2siq (Register dst, XMMRegister src)
 
void Cvttsd2siq (Register dst, Operand src)
 
void Cvttss2si (Register dst, XMMRegister src)
 
void Cvttss2si (Register dst, Operand src)
 
void Cvttss2siq (Register dst, XMMRegister src)
 
void Cvttss2siq (Register dst, Operand src)
 
void Cvtlui2ss (XMMRegister dst, Register src)
 
void Cvtlui2ss (XMMRegister dst, Operand src)
 
void Cvtlui2sd (XMMRegister dst, Register src)
 
void Cvtlui2sd (XMMRegister dst, Operand src)
 
void Cvtqui2ss (XMMRegister dst, Register src)
 
void Cvtqui2ss (XMMRegister dst, Operand src)
 
void Cvtqui2sd (XMMRegister dst, Register src)
 
void Cvtqui2sd (XMMRegister dst, Operand src)
 
void Cvttsd2uiq (Register dst, Operand src, Label *fail=nullptr)
 
void Cvttsd2uiq (Register dst, XMMRegister src, Label *fail=nullptr)
 
void Cvttsd2ui (Register dst, Operand src, Label *fail=nullptr)
 
void Cvttsd2ui (Register dst, XMMRegister src, Label *fail=nullptr)
 
void Cvttss2uiq (Register dst, Operand src, Label *fail=nullptr)
 
void Cvttss2uiq (Register dst, XMMRegister src, Label *fail=nullptr)
 
void Cvttss2ui (Register dst, Operand src, Label *fail=nullptr)
 
void Cvttss2ui (Register dst, XMMRegister src, Label *fail=nullptr)
 
void Cvtpd2ph (XMMRegister dst, XMMRegister src, Register tmp)
 
void Cvtph2pd (XMMRegister dst, XMMRegister src)
 
void Cvtqsi2ss (XMMRegister dst, Register src)
 
void Cvtqsi2ss (XMMRegister dst, Operand src)
 
void Cvtqsi2sd (XMMRegister dst, Register src)
 
void Cvtqsi2sd (XMMRegister dst, Operand src)
 
void Cvtlsi2ss (XMMRegister dst, Register src)
 
void Cvtlsi2ss (XMMRegister dst, Operand src)
 
void Cvtlsi2sd (XMMRegister dst, Register src)
 
void Cvtlsi2sd (XMMRegister dst, Operand src)
 
void Cmpeqss (XMMRegister dst, XMMRegister src)
 
void Cmpeqsd (XMMRegister dst, XMMRegister src)
 
void PextrdPreSse41 (Register dst, XMMRegister src, uint8_t imm8)
 
void Pextrq (Register dst, XMMRegister src, int8_t imm8)
 
void PinsrdPreSse41 (XMMRegister dst, Register src2, uint8_t imm8, uint32_t *load_pc_offset=nullptr)
 
void PinsrdPreSse41 (XMMRegister dst, Operand src2, uint8_t imm8, uint32_t *load_pc_offset=nullptr)
 
void Pinsrq (XMMRegister dst, XMMRegister src1, Register src2, uint8_t imm8, uint32_t *load_pc_offset=nullptr)
 
void Pinsrq (XMMRegister dst, XMMRegister src1, Operand src2, uint8_t imm8, uint32_t *load_pc_offset=nullptr)
 
void Lzcntq (Register dst, Register src)
 
void Lzcntq (Register dst, Operand src)
 
void Lzcntl (Register dst, Register src)
 
void Lzcntl (Register dst, Operand src)
 
void Tzcntq (Register dst, Register src)
 
void Tzcntq (Register dst, Operand src)
 
void Tzcntl (Register dst, Register src)
 
void Tzcntl (Register dst, Operand src)
 
void Popcntl (Register dst, Register src)
 
void Popcntl (Register dst, Operand src)
 
void Popcntq (Register dst, Register src)
 
void Popcntq (Register dst, Operand src)
 
void Cmp (Register dst, Tagged< Smi > src)
 
void Cmp (Operand dst, Tagged< Smi > src)
 
void Cmp (Register dst, int32_t src)
 
void CmpTagged (const Register &src1, const Register &src2)
 
void I64x4Mul (YMMRegister dst, YMMRegister lhs, YMMRegister rhs, YMMRegister tmp1, YMMRegister tmp2)
 
void F64x4Min (YMMRegister dst, YMMRegister lhs, YMMRegister rhs, YMMRegister scratch)
 
void F64x4Max (YMMRegister dst, YMMRegister lhs, YMMRegister rhs, YMMRegister scratch)
 
void F32x8Min (YMMRegister dst, YMMRegister lhs, YMMRegister rhs, YMMRegister scratch)
 
void F32x8Max (YMMRegister dst, YMMRegister lhs, YMMRegister rhs, YMMRegister scratch)
 
void F16x8Min (YMMRegister dst, XMMRegister lhs, XMMRegister rhs, YMMRegister scratch, YMMRegister scratch2)
 
void F16x8Max (YMMRegister dst, XMMRegister lhs, XMMRegister rhs, YMMRegister scratch, YMMRegister scratch2)
 
void I64x4ExtMul (YMMRegister dst, XMMRegister src1, XMMRegister src2, YMMRegister scratch, bool is_signed)
 
void I32x8ExtMul (YMMRegister dst, XMMRegister src1, XMMRegister src2, YMMRegister scratch, bool is_signed)
 
void I16x16ExtMul (YMMRegister dst, XMMRegister src1, XMMRegister src2, YMMRegister scratch, bool is_signed)
 
void I32x8SConvertF32x8 (YMMRegister dst, YMMRegister src, YMMRegister tmp, Register scratch)
 
void I16x8SConvertF16x8 (YMMRegister dst, XMMRegister src, YMMRegister tmp, Register scratch)
 
void I16x8TruncF16x8U (YMMRegister dst, XMMRegister src, YMMRegister tmp)
 
void F16x8Qfma (YMMRegister dst, XMMRegister src1, XMMRegister src2, XMMRegister src3, YMMRegister tmp, YMMRegister tmp2)
 
void F16x8Qfms (YMMRegister dst, XMMRegister src1, XMMRegister src2, XMMRegister src3, YMMRegister tmp, YMMRegister tmp2)
 
void S256Not (YMMRegister dst, YMMRegister src, YMMRegister scratch)
 
void S256Select (YMMRegister dst, YMMRegister mask, YMMRegister src1, YMMRegister src2, YMMRegister scratch)
 
void F64x4Splat (YMMRegister dst, XMMRegister src)
 
void F32x8Splat (YMMRegister dst, XMMRegister src)
 
void F32x8Qfma (YMMRegister dst, YMMRegister src1, YMMRegister src2, YMMRegister src3, YMMRegister tmp)
 
void F32x8Qfms (YMMRegister dst, YMMRegister src1, YMMRegister src2, YMMRegister src3, YMMRegister tmp)
 
void F64x4Qfma (YMMRegister dst, YMMRegister src1, YMMRegister src2, YMMRegister src3, YMMRegister tmp)
 
void F64x4Qfms (YMMRegister dst, YMMRegister src1, YMMRegister src2, YMMRegister src3, YMMRegister tmp)
 
void I32x8DotI8x32I7x32AddS (YMMRegister dst, YMMRegister src1, YMMRegister src2, YMMRegister src3, YMMRegister scratch, YMMRegister splat_reg)
 
void I32x8TruncF32x8U (YMMRegister dst, YMMRegister src, YMMRegister scratch1, YMMRegister scratch2)
 
void SmiTag (Register reg)
 
void SmiTag (Register dst, Register src)
 
void SmiCompare (Register smi1, Register smi2)
 
void SmiCompare (Register dst, Tagged< Smi > src)
 
void SmiCompare (Register dst, Operand src)
 
void SmiCompare (Operand dst, Register src)
 
void SmiCompare (Operand dst, Tagged< Smi > src)
 
Condition CheckSmi (Register src)
 
Condition CheckSmi (Operand src)
 
void ClobberDecompressedSmiBits (Register smi)
 
void AssertNotSmi (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertSmi (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertSmi (Operand object) NOOP_UNLESS_DEBUG_CODE
 
void JumpIfSmi (Register src, Label *on_smi, Label::Distance near_jump=Label::kFar)
 
void JumpIfNotSmi (Register src, Label *on_not_smi, Label::Distance near_jump=Label::kFar)
 
void JumpIfNotSmi (Operand src, Label *on_not_smi, Label::Distance near_jump=Label::kFar)
 
void SmiAddConstant (Operand dst, Tagged< Smi > constant)
 
SmiIndex SmiToIndex (Register dst, Register src, int shift)
 
void JumpIf (Condition cond, Register a, int32_t b, Label *dest)
 
void JumpIfEqual (Register a, int32_t b, Label *dest)
 
void JumpIfLessThan (Register a, int32_t b, Label *dest)
 
void JumpIfUnsignedLessThan (Register a, int32_t b, Label *dest)
 
void Switch (Register scrach, Register reg, int case_base_value, Label **labels, int num_labels)
 
void LoadMap (Register destination, Register object)
 
void LoadCompressedMap (Register destination, Register object)
 
void LoadFeedbackVector (Register dst, Register closure, Label *fbv_undef, Label::Distance distance)
 
void Move (Register dst, intptr_t x)
 
void Move (Operand dst, intptr_t x)
 
void Move (Register dst, Tagged< Smi > source)
 
void Move (Operand dst, Tagged< Smi > source)
 
void Move (Register dst, Tagged< TaggedIndex > source)
 
void Move (Operand dst, Tagged< TaggedIndex > source)
 
void Move (Register dst, ExternalReference ext)
 
void Move (XMMRegister dst, uint32_t src)
 
void Move (XMMRegister dst, uint64_t src)
 
void Move (XMMRegister dst, float src)
 
void Move (XMMRegister dst, double src)
 
void Move (XMMRegister dst, uint64_t high, uint64_t low)
 
void Move (Register target, Register source)
 
void Move (XMMRegister target, XMMRegister source)
 
void Move (Register target, Operand source)
 
void Move (Register target, Immediate source)
 
void Move (Register dst, Handle< HeapObject > source, RelocInfo::Mode rmode=RelocInfo::FULL_EMBEDDED_OBJECT)
 
void Move (Operand dst, Handle< HeapObject > source, RelocInfo::Mode rmode=RelocInfo::FULL_EMBEDDED_OBJECT)
 
void Move (Register dst, Address ptr, RelocInfo::Mode rmode)
 
void MovePair (Register dst0, Register src0, Register dst1, Register src1)
 
void SmiUntag (Register reg)
 
void SmiUntagUnsigned (Register reg)
 
void SmiUntag (Register dst, Register src)
 
void SmiUntag (Register dst, Operand src)
 
void SmiUntagUnsigned (Register dst, Operand src)
 
void SmiToInt32 (Register reg)
 
void SmiToInt32 (Register dst, Register src)
 
void LoadAddress (Register destination, ExternalReference source)
 
void LoadFromConstantsTable (Register destination, int constant_index) final
 
void LoadRootRegisterOffset (Register destination, intptr_t offset) final
 
void LoadRootRelative (Register destination, int32_t offset) final
 
void StoreRootRelative (int32_t offset, Register value) final
 
Operand ExternalReferenceAsOperand (ExternalReference reference, Register scratch=kScratchRegister)
 
Operand ExternalReferenceAsOperand (IsolateFieldId id)
 
void Call (Register reg)
 
void Call (Operand op)
 
void Call (Handle< Code > code_object, RelocInfo::Mode rmode)
 
void Call (Address destination, RelocInfo::Mode rmode)
 
void Call (ExternalReference ext)
 
void Call (Label *target)
 
Operand EntryFromBuiltinAsOperand (Builtin builtin_index)
 
Operand EntryFromBuiltinIndexAsOperand (Register builtin_index)
 
void CallBuiltinByIndex (Register builtin_index)
 
void CallBuiltin (Builtin builtin)
 
void TailCallBuiltin (Builtin builtin)
 
void TailCallBuiltin (Builtin builtin, Condition cc)
 
void LoadCodeInstructionStart (Register destination, Register code_object, CodeEntrypointTag tag)
 
void CallCodeObject (Register code_object, CodeEntrypointTag tag)
 
void JumpCodeObject (Register code_object, CodeEntrypointTag tag, JumpMode jump_mode=JumpMode::kJump)
 
void CallJSFunction (Register function_object, uint16_t argument_count)
 
void JumpJSFunction (Register function_object, JumpMode jump_mode=JumpMode::kJump)
 
void Jump (Address destination, RelocInfo::Mode rmode)
 
void Jump (Address destination, RelocInfo::Mode rmode, Condition cc)
 
void Jump (const ExternalReference &reference)
 
void Jump (Operand op)
 
void Jump (Operand op, Condition cc)
 
void Jump (Handle< Code > code_object, RelocInfo::Mode rmode)
 
void Jump (Handle< Code > code_object, RelocInfo::Mode rmode, Condition cc)
 
void BailoutIfDeoptimized (Register scratch)
 
void CallForDeoptimization (Builtin target, int deopt_id, Label *exit, DeoptimizeKind kind, Label *ret, Label *jump_deoptimization_entry_label)
 
void Trap ()
 
void DebugBreak ()
 
void CompareRoot (Register with, RootIndex index, ComparisonMode mode=ComparisonMode::kDefault)
 
void CompareTaggedRoot (Register with, RootIndex index)
 
void CompareRoot (Operand with, RootIndex index)
 
void StubPrologue (StackFrame::Type type)
 
void Prologue ()
 
void DropArguments (Register count, Register scratch)
 
void DropArgumentsAndPushNewReceiver (Register argc, Register receiver, Register scratch)
 
void DropArgumentsAndPushNewReceiver (Register argc, Operand receiver, Register scratch)
 
void Assert (Condition cc, AbortReason reason) NOOP_UNLESS_DEBUG_CODE
 
void AssertUnreachable (AbortReason reason) NOOP_UNLESS_DEBUG_CODE
 
void AssertZeroExtended (Register reg) NOOP_UNLESS_DEBUG_CODE
 
void AssertSignedBitOfSmiIsZero (Register smi) NOOP_UNLESS_DEBUG_CODE
 
void Check (Condition cc, AbortReason reason)
 
void SbxCheck (Condition cc, AbortReason reason)
 
void CmpInstanceType (Register map, InstanceType type)
 
void AssertMap (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertCode (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertSmiOrHeapObjectInMainCompressionCage (Register object) NOOP_UNLESS_DEBUG_CODE
 
void Abort (AbortReason msg)
 
void CheckStackAlignment ()
 
void AlignStackPointer ()
 
void EnterFrame (StackFrame::Type type)
 
void EnterFrame (StackFrame::Type type, bool load_constant_pool_pointer_reg)
 
void LeaveFrame (StackFrame::Type type)
 
void AllocateStackSpace (Register bytes)
 
void AllocateStackSpace (int bytes)
 
void InitializeRootRegister ()
 
void CallEphemeronKeyBarrier (Register object, Register slot_address, SaveFPRegsMode fp_mode)
 
void CallIndirectPointerBarrier (Register object, Register slot_address, SaveFPRegsMode fp_mode, IndirectPointerTag tag)
 
void CallRecordWriteStubSaveRegisters (Register object, Register slot_address, SaveFPRegsMode fp_mode, StubCallMode mode=StubCallMode::kCallBuiltinPointer)
 
void CallRecordWriteStub (Register object, Register slot_address, SaveFPRegsMode fp_mode, StubCallMode mode=StubCallMode::kCallBuiltinPointer)
 
void MoveNumber (Register dst, double value)
 
void MoveNonSmi (Register dst, double value)
 
int RequiredStackSizeForCallerSaved (SaveFPRegsMode fp_mode, Register exclusion=no_reg) const
 
int PushCallerSaved (SaveFPRegsMode fp_mode, Register exclusion=no_reg)
 
int PopCallerSaved (SaveFPRegsMode fp_mode, Register exclusion=no_reg)
 
int PushAll (RegList registers)
 
int PopAll (RegList registers)
 
int PushAll (DoubleRegList registers, int stack_slot_size=kStackSavedSavedFPSize)
 
int PopAll (DoubleRegList registers, int stack_slot_size=kStackSavedSavedFPSize)
 
void ComputeCodeStartAddress (Register dst)
 
void CodeEntry ()
 
void ExceptionHandler ()
 
void BindExceptionHandler (Label *label)
 
void BindJumpTarget (Label *label)
 
void LoadTaggedField (Register destination, Operand field_operand)
 
void LoadTaggedField (TaggedRegister destination, Operand field_operand)
 
void LoadTaggedFieldWithoutDecompressing (Register destination, Operand field_operand)
 
void LoadTaggedSignedField (Register destination, Operand field_operand)
 
void PushTaggedField (Operand field_operand, Register scratch)
 
void SmiUntagField (Register dst, Operand src)
 
void SmiUntagFieldUnsigned (Register dst, Operand src)
 
void StoreTaggedField (Operand dst_field_operand, Immediate immediate)
 
void StoreTaggedField (Operand dst_field_operand, Register value)
 
void StoreTaggedSignedField (Operand dst_field_operand, Tagged< Smi > value)
 
void AtomicStoreTaggedField (Operand dst_field_operand, Register value)
 
void DecompressTaggedSigned (Register destination, Operand field_operand)
 
void DecompressTagged (Register destination, Operand field_operand)
 
void DecompressTagged (Register destination, Register source)
 
void DecompressTagged (Register destination, Tagged_t immediate)
 
void DecompressProtected (Register destination, Operand field_operand)
 
void EnterSandbox ()
 
void ExitSandbox ()
 
void AssertInSandboxedExecutionMode ()
 
void SwitchSandboxingModeTo (CodeSandboxingMode mode)
 
void SwitchSandboxingModeBeforeCallIfNeeded (CodeSandboxingMode target_sandboxing_mode)
 
void SwitchSandboxingModeAfterCallIfNeeded (CodeSandboxingMode target_sandboxing_mode)
 
void EncodeSandboxedPointer (Register value)
 
void DecodeSandboxedPointer (Register value)
 
void LoadSandboxedPointerField (Register destination, Operand field_operand)
 
void StoreSandboxedPointerField (Operand dst_field_operand, Register value)
 
void LoadExternalPointerField (Register destination, Operand field_operand, ExternalPointerTagRange tag_range, Register scratch, IsolateRootLocation isolateRootLocation=IsolateRootLocation::kInRootRegister)
 
void LoadTrustedPointerField (Register destination, Operand field_operand, IndirectPointerTag tag, Register scratch)
 
void StoreTrustedPointerField (Operand dst_field_operand, Register value)
 
void LoadCodePointerField (Register destination, Operand field_operand, Register scratch)
 
void StoreCodePointerField (Operand dst_field_operand, Register value)
 
void LoadIndirectPointerField (Register destination, Operand field_operand, IndirectPointerTag tag, Register scratch)
 
void StoreIndirectPointerField (Operand dst_field_operand, Register value)
 
void LoadProtectedPointerField (Register destination, Operand field_operand)
 
void Load (Register destination, ExternalReference source)
 
void Store (ExternalReference destination, Register source)
 
void PushAddress (ExternalReference source)
 
void PushRoot (RootIndex index)
 
void JumpIfRoot (Register with, RootIndex index, Label *if_equal, Label::Distance if_equal_distance=Label::kFar)
 
void JumpIfRoot (Operand with, RootIndex index, Label *if_equal, Label::Distance if_equal_distance=Label::kFar)
 
void JumpIfNotRoot (Register with, RootIndex index, Label *if_not_equal, Label::Distance if_not_equal_distance=Label::kFar)
 
void JumpIfNotRoot (Operand with, RootIndex index, Label *if_not_equal, Label::Distance if_not_equal_distance=Label::kFar)
 
void RecordWriteField (Register object, int offset, Register value, Register slot_address, SaveFPRegsMode save_fp, SmiCheck smi_check=SmiCheck::kInline, ReadOnlyCheck ro_check=ReadOnlyCheck::kInline, SlotDescriptor slot=SlotDescriptor::ForDirectPointerSlot())
 
void RecordWrite (Register object, Register slot_address, Register value, SaveFPRegsMode save_fp, SmiCheck smi_check=SmiCheck::kInline, ReadOnlyCheck ro_check=ReadOnlyCheck::kInline, SlotDescriptor slot=SlotDescriptor::ForDirectPointerSlot())
 
void EnterExitFrame (int extra_slots, StackFrame::Type frame_type, Register c_function)
 
void LeaveExitFrame ()
 
void InvokeFunctionCode (Register function, Register new_target, Register expected_parameter_count, Register actual_parameter_count, InvokeType type)
 
void InvokeFunction (Register function, Register new_target, Register actual_parameter_count, InvokeType type)
 
void InvokeFunction (Register function, Register new_target, Register expected_parameter_count, Register actual_parameter_count, InvokeType type)
 
void CallDebugOnFunctionCall (Register fun, Register new_target, Register expected_parameter_count_or_dispatch_handle, Register actual_parameter_count)
 
void Cmp (Register dst, Handle< Object > source)
 
void Cmp (Operand dst, Handle< Object > source)
 
void CompareRange (Register value, unsigned lower_limit, unsigned higher_limit)
 
void JumpIfIsInRange (Register value, unsigned lower_limit, unsigned higher_limit, Label *on_in_range, Label::Distance near_jump=Label::kFar)
 
void Drop (int stack_elements)
 
void DropUnderReturnAddress (int stack_elements, Register scratch=kScratchRegister)
 
void PushQuad (Operand src)
 
void PushImm32 (int32_t imm32)
 
void Pop (Register dst)
 
void Pop (Operand dst)
 
void PopQuad (Operand dst)
 
void CmpObjectType (Register heap_object, InstanceType type, Register map)
 
void IsObjectType (Register heap_object, InstanceType type, Register scratch)
 
void IsObjectTypeInRange (Register heap_object, InstanceType low, InstanceType high, Register scratch)
 
void JumpIfJSAnyIsNotPrimitive (Register heap_object, Register scratch, Label *target, Label::Distance distance=Label::kFar, Condition condition=Condition::kUnsignedGreaterThanEqual)
 
void JumpIfJSAnyIsPrimitive (Register heap_object, Register scratch, Label *target, Label::Distance distance=Label::kFar)
 
void CmpInstanceTypeRange (Register map, Register instance_type_out, InstanceType low, InstanceType high)
 
template<typename Field >
void DecodeField (Register reg)
 
void TestCodeIsMarkedForDeoptimization (Register code)
 
void TestCodeIsTurbofanned (Register code)
 
Immediate ClearedValue () const
 
void AssertFeedbackCell (Register object, Register scratch) NOOP_UNLESS_DEBUG_CODE
 
void AssertFeedbackVector (Register object, Register scratch) NOOP_UNLESS_DEBUG_CODE
 
void GenerateTailCallToReturnedCode (Runtime::FunctionId function_id, JumpMode jump_mode=JumpMode::kJump)
 
void ReplaceClosureCodeWithOptimizedCode (Register optimized_code, Register closure, Register scratch1, Register slot_address)
 
Condition CheckFeedbackVectorFlagsNeedsProcessing (Register feedback_vector, CodeKind current_code_kind)
 
void CheckFeedbackVectorFlagsAndJumpIfNeedsProcessing (Register feedback_vector, CodeKind current_code_kind, Label *flags_need_processing)
 
void OptimizeCodeOrTailCallOptimizedCodeSlot (Register feedback_vector, Register closure, JumpMode jump_mode)
 
void OptimizeCodeOrTailCallOptimizedCodeSlot (Register flags, Register feedback_vector)
 
void AssertConstructor (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertFunction (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertCallableFunction (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertBoundFunction (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertGeneratorObject (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertUndefinedOrAllocationSite (Register object) NOOP_UNLESS_DEBUG_CODE
 
void AssertJSAny (Register object, Register map_tmp, AbortReason abort_reason) NOOP_UNLESS_DEBUG_CODE
 
void PushStackHandler ()
 
void PopStackHandler ()
 
void LoadGlobalProxy (Register dst)
 
void LoadNativeContextSlot (Register dst, int index)
 
void TryLoadOptimizedOsrCode (Register scratch_and_result, CodeKind min_opt_level, Register feedback_vector, FeedbackSlot slot, Label *on_result, Label::Distance distance)
 
void CallRuntime (const Runtime::Function *f, int num_arguments)
 
void CallRuntime (Runtime::FunctionId fid)
 
void CallRuntime (Runtime::FunctionId fid, int num_arguments)
 
void TailCallRuntime (Runtime::FunctionId fid)
 
void JumpToExternalReference (const ExternalReference &ext, bool builtin_exit_frame=false)
 
void IncrementCounter (StatsCounter *counter, int value)
 
void EmitIncrementCounter (StatsCounter *counter, int value)
 
void DecrementCounter (StatsCounter *counter, int value)
 
void EmitDecrementCounter (StatsCounter *counter, int value)
 
Operand StackLimitAsOperand (StackLimitKind kind)
 
void StackOverflowCheck (Register num_args, Label *stack_overflow, Label::Distance stack_overflow_distance=Label::kFar)
 
void LoadWeakValue (Register in_out, Label *target_if_cleared)
 
template<typename CvtFunc >
void RoundFloatingPointToInteger (Register rd, FPURegister fs, Register result, CvtFunc fcvt_generator)
 
 MacroAssemblerBase (Isolate *isolate, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (Isolate *isolate, MaybeAssemblerZone zone, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (Isolate *isolate, const AssemblerOptions &options, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (Isolate *isolate, MaybeAssemblerZone zone, AssemblerOptions options, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (MaybeAssemblerZone zone, AssemblerOptions options, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (Isolate *isolate, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (Isolate *isolate, MaybeAssemblerZone zone, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (Isolate *isolate, const AssemblerOptions &options, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (Isolate *isolate, MaybeAssemblerZone zone, AssemblerOptions options, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (MaybeAssemblerZone zone, AssemblerOptions options, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (Isolate *isolate, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (Isolate *isolate, MaybeAssemblerZone zone, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (Isolate *isolate, const AssemblerOptions &options, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (Isolate *isolate, MaybeAssemblerZone zone, AssemblerOptions options, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (MaybeAssemblerZone zone, AssemblerOptions options, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (Isolate *isolate, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (Isolate *isolate, MaybeAssemblerZone zone, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (Isolate *isolate, const AssemblerOptions &options, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (Isolate *isolate, MaybeAssemblerZone zone, AssemblerOptions options, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (MaybeAssemblerZone zone, AssemblerOptions options, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (Isolate *isolate, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (Isolate *isolate, MaybeAssemblerZone zone, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (Isolate *isolate, const AssemblerOptions &options, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (Isolate *isolate, MaybeAssemblerZone zone, AssemblerOptions options, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (MaybeAssemblerZone zone, AssemblerOptions options, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (Isolate *isolate, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (Isolate *isolate, MaybeAssemblerZone zone, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (Isolate *isolate, const AssemblerOptions &options, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (Isolate *isolate, MaybeAssemblerZone zone, AssemblerOptions options, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (MaybeAssemblerZone zone, AssemblerOptions options, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (Isolate *isolate, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (Isolate *isolate, MaybeAssemblerZone zone, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (Isolate *isolate, const AssemblerOptions &options, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (Isolate *isolate, MaybeAssemblerZone zone, AssemblerOptions options, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (MaybeAssemblerZone zone, AssemblerOptions options, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
- Public Member Functions inherited from v8::internal::MacroAssemblerBase
 MacroAssemblerBase (Isolate *isolate, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (Isolate *isolate, MaybeAssemblerZone zone, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (Isolate *isolate, const AssemblerOptions &options, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (Isolate *isolate, MaybeAssemblerZone zone, AssemblerOptions options, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (MaybeAssemblerZone zone, AssemblerOptions options, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
Isolateisolate () const
 
IndirectHandle< HeapObjectCodeObject () const
 
bool root_array_available () const
 
void set_root_array_available (bool v)
 
bool should_abort_hard () const
 
void set_abort_hard (bool v)
 
void set_builtin (Builtin builtin)
 
Builtin builtin () const
 
CodeSandboxingMode sandboxing_mode () const
 
void SetSandboxingModeForCurrentBuiltin (CodeSandboxingMode mode)
 
void set_has_frame (bool v)
 
bool has_frame () const
 
void IndirectLoadConstant (Register destination, Handle< HeapObject > object)
 
void IndirectLoadExternalReference (Register destination, ExternalReference reference)
 
Address BuiltinEntry (Builtin builtin)
 
Tagged_t ReadOnlyRootPtr (RootIndex index)
 
std::string CommentForOffHeapTrampoline (const char *prefix, Builtin builtin)
 
- Public Member Functions inherited from v8::internal::Assembler
 Assembler (const AssemblerOptions &, std::unique_ptr< AssemblerBuffer >={})
 
 Assembler (const MaybeAssemblerZone &, const AssemblerOptions &options, std::unique_ptr< AssemblerBuffer > buffer={})
 
 ~Assembler () override
 
void AbortedCodeGeneration () override
 
void GetCode (LocalIsolate *isolate, CodeDesc *desc, SafepointTableBuilderBase *safepoint_table_builder, int handler_table_offset)
 
void GetCode (Isolate *isolate, CodeDesc *desc)
 
void GetCode (LocalIsolate *isolate, CodeDesc *desc)
 
void bind (Label *L)
 
int branch_offset (Label *L)
 
RegListGetScratchRegisterList ()
 
VfpRegListGetScratchVfpRegisterList ()
 
void Align (int m)
 
void DataAlign (int m)
 
void CodeTargetAlign ()
 
void LoopHeaderAlign ()
 
void b (int branch_offset, Condition cond=al, RelocInfo::Mode rmode=RelocInfo::NO_INFO)
 
void bl (int branch_offset, Condition cond=al, RelocInfo::Mode rmode=RelocInfo::NO_INFO)
 
void blx (int branch_offset)
 
void blx (Register target, Condition cond=al)
 
void bx (Register target, Condition cond=al)
 
void b (Label *L, Condition cond=al)
 
void b (Condition cond, Label *L)
 
void bl (Label *L, Condition cond=al)
 
void bl (Condition cond, Label *L)
 
void blx (Label *L)
 
void and_ (Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
 
void and_ (Register dst, Register src1, Register src2, SBit s=LeaveCC, Condition cond=al)
 
void eor (Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
 
void eor (Register dst, Register src1, Register src2, SBit s=LeaveCC, Condition cond=al)
 
void sub (Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
 
void sub (Register dst, Register src1, Register src2, SBit s=LeaveCC, Condition cond=al)
 
void rsb (Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
 
void add (Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
 
void add (Register dst, Register src1, Register src2, SBit s=LeaveCC, Condition cond=al)
 
void adc (Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
 
void sbc (Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
 
void rsc (Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
 
void tst (Register src1, const Operand &src2, Condition cond=al)
 
void tst (Register src1, Register src2, Condition cond=al)
 
void teq (Register src1, const Operand &src2, Condition cond=al)
 
void cmp (Register src1, const Operand &src2, Condition cond=al)
 
void cmp (Register src1, Register src2, Condition cond=al)
 
void cmp_raw_immediate (Register src1, int raw_immediate, Condition cond=al)
 
void cmn (Register src1, const Operand &src2, Condition cond=al)
 
void orr (Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
 
void orr (Register dst, Register src1, Register src2, SBit s=LeaveCC, Condition cond=al)
 
void mov (Register dst, const Operand &src, SBit s=LeaveCC, Condition cond=al)
 
void mov (Register dst, Register src, SBit s=LeaveCC, Condition cond=al)
 
void mov_label_offset (Register dst, Label *label)
 
void movw (Register reg, uint32_t immediate, Condition cond=al)
 
void movt (Register reg, uint32_t immediate, Condition cond=al)
 
void bic (Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
 
void mvn (Register dst, const Operand &src, SBit s=LeaveCC, Condition cond=al)
 
void asr (Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
 
void lsl (Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
 
void lsr (Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
 
void mla (Register dst, Register src1, Register src2, Register srcA, SBit s=LeaveCC, Condition cond=al)
 
void mls (Register dst, Register src1, Register src2, Register srcA, Condition cond=al)
 
void sdiv (Register dst, Register src1, Register src2, Condition cond=al)
 
void udiv (Register dst, Register src1, Register src2, Condition cond=al)
 
void mul (Register dst, Register src1, Register src2, SBit s=LeaveCC, Condition cond=al)
 
void smmla (Register dst, Register src1, Register src2, Register srcA, Condition cond=al)
 
void smmul (Register dst, Register src1, Register src2, Condition cond=al)
 
void smlal (Register dstL, Register dstH, Register src1, Register src2, SBit s=LeaveCC, Condition cond=al)
 
void smull (Register dstL, Register dstH, Register src1, Register src2, SBit s=LeaveCC, Condition cond=al)
 
void umlal (Register dstL, Register dstH, Register src1, Register src2, SBit s=LeaveCC, Condition cond=al)
 
void umull (Register dstL, Register dstH, Register src1, Register src2, SBit s=LeaveCC, Condition cond=al)
 
void clz (Register dst, Register src, Condition cond=al)
 
void usat (Register dst, int satpos, const Operand &src, Condition cond=al)
 
void ubfx (Register dst, Register src, int lsb, int width, Condition cond=al)
 
void sbfx (Register dst, Register src, int lsb, int width, Condition cond=al)
 
void bfc (Register dst, int lsb, int width, Condition cond=al)
 
void bfi (Register dst, Register src, int lsb, int width, Condition cond=al)
 
void pkhbt (Register dst, Register src1, const Operand &src2, Condition cond=al)
 
void pkhtb (Register dst, Register src1, const Operand &src2, Condition cond=al)
 
void sxtb (Register dst, Register src, int rotate=0, Condition cond=al)
 
void sxtab (Register dst, Register src1, Register src2, int rotate=0, Condition cond=al)
 
void sxth (Register dst, Register src, int rotate=0, Condition cond=al)
 
void sxtah (Register dst, Register src1, Register src2, int rotate=0, Condition cond=al)
 
void uxtb (Register dst, Register src, int rotate=0, Condition cond=al)
 
void uxtab (Register dst, Register src1, Register src2, int rotate=0, Condition cond=al)
 
void uxtb16 (Register dst, Register src, int rotate=0, Condition cond=al)
 
void uxth (Register dst, Register src, int rotate=0, Condition cond=al)
 
void uxtah (Register dst, Register src1, Register src2, int rotate=0, Condition cond=al)
 
void rbit (Register dst, Register src, Condition cond=al)
 
void rev (Register dst, Register src, Condition cond=al)
 
void mrs (Register dst, SRegister s, Condition cond=al)
 
void msr (SRegisterFieldMask fields, const Operand &src, Condition cond=al)
 
void ldr (Register dst, const MemOperand &src, Condition cond=al)
 
void str (Register src, const MemOperand &dst, Condition cond=al)
 
void ldrb (Register dst, const MemOperand &src, Condition cond=al)
 
void strb (Register src, const MemOperand &dst, Condition cond=al)
 
void ldrh (Register dst, const MemOperand &src, Condition cond=al)
 
void strh (Register src, const MemOperand &dst, Condition cond=al)
 
void ldrsb (Register dst, const MemOperand &src, Condition cond=al)
 
void ldrsh (Register dst, const MemOperand &src, Condition cond=al)
 
void ldrd (Register dst1, Register dst2, const MemOperand &src, Condition cond=al)
 
void strd (Register src1, Register src2, const MemOperand &dst, Condition cond=al)
 
void ldr_pcrel (Register dst, int imm12, Condition cond=al)
 
void ldrex (Register dst, Register src, Condition cond=al)
 
void strex (Register src1, Register src2, Register dst, Condition cond=al)
 
void ldrexb (Register dst, Register src, Condition cond=al)
 
void strexb (Register src1, Register src2, Register dst, Condition cond=al)
 
void ldrexh (Register dst, Register src, Condition cond=al)
 
void strexh (Register src1, Register src2, Register dst, Condition cond=al)
 
void ldrexd (Register dst1, Register dst2, Register src, Condition cond=al)
 
void strexd (Register res, Register src1, Register src2, Register dst, Condition cond=al)
 
void pld (const MemOperand &address)
 
void ldm (BlockAddrMode am, Register base, RegList dst, Condition cond=al)
 
void stm (BlockAddrMode am, Register base, RegList src, Condition cond=al)
 
void stop (Condition cond=al, int32_t code=kDefaultStopCode)
 
void bkpt (uint32_t imm16)
 
void svc (uint32_t imm24, Condition cond=al)
 
void dmb (BarrierOption option)
 
void dsb (BarrierOption option)
 
void isb (BarrierOption option)
 
void csdb ()
 
void cdp (Coprocessor coproc, int opcode_1, CRegister crd, CRegister crn, CRegister crm, int opcode_2, Condition cond=al)
 
void cdp2 (Coprocessor coproc, int opcode_1, CRegister crd, CRegister crn, CRegister crm, int opcode_2)
 
void mcr (Coprocessor coproc, int opcode_1, Register rd, CRegister crn, CRegister crm, int opcode_2=0, Condition cond=al)
 
void mcr2 (Coprocessor coproc, int opcode_1, Register rd, CRegister crn, CRegister crm, int opcode_2=0)
 
void mrc (Coprocessor coproc, int opcode_1, Register rd, CRegister crn, CRegister crm, int opcode_2=0, Condition cond=al)
 
void mrc2 (Coprocessor coproc, int opcode_1, Register rd, CRegister crn, CRegister crm, int opcode_2=0)
 
void ldc (Coprocessor coproc, CRegister crd, const MemOperand &src, LFlag l=Short, Condition cond=al)
 
void ldc (Coprocessor coproc, CRegister crd, Register base, int option, LFlag l=Short, Condition cond=al)
 
void ldc2 (Coprocessor coproc, CRegister crd, const MemOperand &src, LFlag l=Short)
 
void ldc2 (Coprocessor coproc, CRegister crd, Register base, int option, LFlag l=Short)
 
void vldr (const DwVfpRegister dst, const Register base, int offset, const Condition cond=al)
 
void vldr (const DwVfpRegister dst, const MemOperand &src, const Condition cond=al)
 
void vldr (const SwVfpRegister dst, const Register base, int offset, const Condition cond=al)
 
void vldr (const SwVfpRegister dst, const MemOperand &src, const Condition cond=al)
 
void vstr (const DwVfpRegister src, const Register base, int offset, const Condition cond=al)
 
void vstr (const DwVfpRegister src, const MemOperand &dst, const Condition cond=al)
 
void vstr (const SwVfpRegister src, const Register base, int offset, const Condition cond=al)
 
void vstr (const SwVfpRegister src, const MemOperand &dst, const Condition cond=al)
 
void vldm (BlockAddrMode am, Register base, DwVfpRegister first, DwVfpRegister last, Condition cond=al)
 
void vstm (BlockAddrMode am, Register base, DwVfpRegister first, DwVfpRegister last, Condition cond=al)
 
void vldm (BlockAddrMode am, Register base, SwVfpRegister first, SwVfpRegister last, Condition cond=al)
 
void vstm (BlockAddrMode am, Register base, SwVfpRegister first, SwVfpRegister last, Condition cond=al)
 
void vmov (const SwVfpRegister dst, Float32 imm)
 
void vmov (const DwVfpRegister dst, base::Double imm, const Register extra_scratch=no_reg)
 
void vmov (const SwVfpRegister dst, const SwVfpRegister src, const Condition cond=al)
 
void vmov (const DwVfpRegister dst, const DwVfpRegister src, const Condition cond=al)
 
void vmov (const DwVfpRegister dst, const Register src1, const Register src2, const Condition cond=al)
 
void vmov (const Register dst1, const Register dst2, const DwVfpRegister src, const Condition cond=al)
 
void vmov (const SwVfpRegister dst, const Register src, const Condition cond=al)
 
void vmov (const Register dst, const SwVfpRegister src, const Condition cond=al)
 
void vcvt_f64_s32 (const DwVfpRegister dst, const SwVfpRegister src, VFPConversionMode mode=kDefaultRoundToZero, const Condition cond=al)
 
void vcvt_f32_s32 (const SwVfpRegister dst, const SwVfpRegister src, VFPConversionMode mode=kDefaultRoundToZero, const Condition cond=al)
 
void vcvt_f64_u32 (const DwVfpRegister dst, const SwVfpRegister src, VFPConversionMode mode=kDefaultRoundToZero, const Condition cond=al)
 
void vcvt_f32_u32 (const SwVfpRegister dst, const SwVfpRegister src, VFPConversionMode mode=kDefaultRoundToZero, const Condition cond=al)
 
void vcvt_s32_f32 (const SwVfpRegister dst, const SwVfpRegister src, VFPConversionMode mode=kDefaultRoundToZero, const Condition cond=al)
 
void vcvt_u32_f32 (const SwVfpRegister dst, const SwVfpRegister src, VFPConversionMode mode=kDefaultRoundToZero, const Condition cond=al)
 
void vcvt_s32_f64 (const SwVfpRegister dst, const DwVfpRegister src, VFPConversionMode mode=kDefaultRoundToZero, const Condition cond=al)
 
void vcvt_u32_f64 (const SwVfpRegister dst, const DwVfpRegister src, VFPConversionMode mode=kDefaultRoundToZero, const Condition cond=al)
 
void vcvt_f64_f32 (const DwVfpRegister dst, const SwVfpRegister src, VFPConversionMode mode=kDefaultRoundToZero, const Condition cond=al)
 
void vcvt_f32_f64 (const SwVfpRegister dst, const DwVfpRegister src, VFPConversionMode mode=kDefaultRoundToZero, const Condition cond=al)
 
void vcvt_f64_s32 (const DwVfpRegister dst, int fraction_bits, const Condition cond=al)
 
void vmrs (const Register dst, const Condition cond=al)
 
void vmsr (const Register dst, const Condition cond=al)
 
void vneg (const DwVfpRegister dst, const DwVfpRegister src, const Condition cond=al)
 
void vneg (const SwVfpRegister dst, const SwVfpRegister src, const Condition cond=al)
 
void vabs (const DwVfpRegister dst, const DwVfpRegister src, const Condition cond=al)
 
void vabs (const SwVfpRegister dst, const SwVfpRegister src, const Condition cond=al)
 
void vadd (const DwVfpRegister dst, const DwVfpRegister src1, const DwVfpRegister src2, const Condition cond=al)
 
void vadd (const SwVfpRegister dst, const SwVfpRegister src1, const SwVfpRegister src2, const Condition cond=al)
 
void vsub (const DwVfpRegister dst, const DwVfpRegister src1, const DwVfpRegister src2, const Condition cond=al)
 
void vsub (const SwVfpRegister dst, const SwVfpRegister src1, const SwVfpRegister src2, const Condition cond=al)
 
void vmul (const DwVfpRegister dst, const DwVfpRegister src1, const DwVfpRegister src2, const Condition cond=al)
 
void vmul (const SwVfpRegister dst, const SwVfpRegister src1, const SwVfpRegister src2, const Condition cond=al)
 
void vmla (const DwVfpRegister dst, const DwVfpRegister src1, const DwVfpRegister src2, const Condition cond=al)
 
void vmla (const SwVfpRegister dst, const SwVfpRegister src1, const SwVfpRegister src2, const Condition cond=al)
 
void vmls (const DwVfpRegister dst, const DwVfpRegister src1, const DwVfpRegister src2, const Condition cond=al)
 
void vmls (const SwVfpRegister dst, const SwVfpRegister src1, const SwVfpRegister src2, const Condition cond=al)
 
void vdiv (const DwVfpRegister dst, const DwVfpRegister src1, const DwVfpRegister src2, const Condition cond=al)
 
void vdiv (const SwVfpRegister dst, const SwVfpRegister src1, const SwVfpRegister src2, const Condition cond=al)
 
void vcmp (const DwVfpRegister src1, const DwVfpRegister src2, const Condition cond=al)
 
void vcmp (const SwVfpRegister src1, const SwVfpRegister src2, const Condition cond=al)
 
void vcmp (const DwVfpRegister src1, const double src2, const Condition cond=al)
 
void vcmp (const SwVfpRegister src1, const float src2, const Condition cond=al)
 
void vmaxnm (const DwVfpRegister dst, const DwVfpRegister src1, const DwVfpRegister src2)
 
void vmaxnm (const SwVfpRegister dst, const SwVfpRegister src1, const SwVfpRegister src2)
 
void vminnm (const DwVfpRegister dst, const DwVfpRegister src1, const DwVfpRegister src2)
 
void vminnm (const SwVfpRegister dst, const SwVfpRegister src1, const SwVfpRegister src2)
 
void vsel (const Condition cond, const DwVfpRegister dst, const DwVfpRegister src1, const DwVfpRegister src2)
 
void vsel (const Condition cond, const SwVfpRegister dst, const SwVfpRegister src1, const SwVfpRegister src2)
 
void vsqrt (const DwVfpRegister dst, const DwVfpRegister src, const Condition cond=al)
 
void vsqrt (const SwVfpRegister dst, const SwVfpRegister src, const Condition cond=al)
 
void vrinta (const SwVfpRegister dst, const SwVfpRegister src)
 
void vrinta (const DwVfpRegister dst, const DwVfpRegister src)
 
void vrintn (const SwVfpRegister dst, const SwVfpRegister src)
 
void vrintn (const DwVfpRegister dst, const DwVfpRegister src)
 
void vrintm (const SwVfpRegister dst, const SwVfpRegister src)
 
void vrintm (const DwVfpRegister dst, const DwVfpRegister src)
 
void vrintp (const SwVfpRegister dst, const SwVfpRegister src)
 
void vrintp (const DwVfpRegister dst, const DwVfpRegister src)
 
void vrintz (const SwVfpRegister dst, const SwVfpRegister src, const Condition cond=al)
 
void vrintz (const DwVfpRegister dst, const DwVfpRegister src, const Condition cond=al)
 
void vld1 (NeonSize size, const NeonListOperand &dst, const NeonMemOperand &src)
 
void vld1s (NeonSize size, const NeonListOperand &dst, uint8_t index, const NeonMemOperand &src)
 
void vld1r (NeonSize size, const NeonListOperand &dst, const NeonMemOperand &src)
 
void vst1 (NeonSize size, const NeonListOperand &src, const NeonMemOperand &dst)
 
void vst1s (NeonSize size, const NeonListOperand &src, uint8_t index, const NeonMemOperand &dst)
 
void vmovl (NeonDataType dt, QwNeonRegister dst, DwVfpRegister src)
 
void vqmovn (NeonDataType dst_dt, NeonDataType src_dt, DwVfpRegister dst, QwNeonRegister src)
 
void vmov (NeonDataType dt, DwVfpRegister dst, int index, Register src)
 
void vmov (NeonDataType dt, Register dst, DwVfpRegister src, int index)
 
void vmov (DwVfpRegister dst, uint64_t imm)
 
void vmov (QwNeonRegister dst, uint64_t imm)
 
void vmov (QwNeonRegister dst, QwNeonRegister src)
 
void vdup (NeonSize size, QwNeonRegister dst, Register src)
 
void vdup (NeonSize size, QwNeonRegister dst, DwVfpRegister src, int index)
 
void vdup (NeonSize size, DwVfpRegister dst, DwVfpRegister src, int index)
 
void vcvt_f32_s32 (QwNeonRegister dst, QwNeonRegister src)
 
void vcvt_f32_u32 (QwNeonRegister dst, QwNeonRegister src)
 
void vcvt_s32_f32 (QwNeonRegister dst, QwNeonRegister src)
 
void vcvt_u32_f32 (QwNeonRegister dst, QwNeonRegister src)
 
void vmvn (QwNeonRegister dst, QwNeonRegister src)
 
void vswp (DwVfpRegister dst, DwVfpRegister src)
 
void vswp (QwNeonRegister dst, QwNeonRegister src)
 
void vabs (QwNeonRegister dst, QwNeonRegister src)
 
void vabs (NeonSize size, QwNeonRegister dst, QwNeonRegister src)
 
void vneg (QwNeonRegister dst, QwNeonRegister src)
 
void vneg (NeonSize size, QwNeonRegister dst, QwNeonRegister src)
 
void vand (QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2)
 
void vbic (QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2)
 
void veor (DwVfpRegister dst, DwVfpRegister src1, DwVfpRegister src2)
 
void veor (QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2)
 
void vbsl (QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2)
 
void vorr (QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2)
 
void vorn (QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2)
 
void vadd (QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2)
 
void vadd (NeonSize size, QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2)
 
void vqadd (NeonDataType dt, QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2)
 
void vsub (QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2)
 
void vsub (NeonSize size, QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2)
 
void vqsub (NeonDataType dt, QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2)
 
void vmlal (NeonDataType size, QwNeonRegister dst, DwVfpRegister src1, DwVfpRegister src2)
 
void vmul (QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2)
 
void vmul (NeonSize size, QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2)
 
void vmull (NeonDataType size, QwNeonRegister dst, DwVfpRegister src1, DwVfpRegister src2)
 
void vmin (QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2)
 
void vmin (NeonDataType dt, QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2)
 
void vmax (QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2)
 
void vmax (NeonDataType dt, QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2)
 
void vpadd (DwVfpRegister dst, DwVfpRegister src1, DwVfpRegister src2)
 
void vpadd (NeonSize size, DwVfpRegister dst, DwVfpRegister src1, DwVfpRegister src2)
 
void vpmin (NeonDataType dt, DwVfpRegister dst, DwVfpRegister src1, DwVfpRegister src2)
 
void vpmax (NeonDataType dt, DwVfpRegister dst, DwVfpRegister src1, DwVfpRegister src2)
 
void vpadal (NeonDataType dt, QwNeonRegister dst, QwNeonRegister src)
 
void vpaddl (NeonDataType dt, QwNeonRegister dst, QwNeonRegister src)
 
void vqrdmulh (NeonDataType dt, QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2)
 
void vrintm (NeonDataType dt, const QwNeonRegister dst, const QwNeonRegister src)
 
void vrintn (NeonDataType dt, const QwNeonRegister dst, const QwNeonRegister src)
 
void vrintp (NeonDataType dt, const QwNeonRegister dst, const QwNeonRegister src)
 
void vrintz (NeonDataType dt, const QwNeonRegister dst, const QwNeonRegister src)
 
void vshl (NeonDataType dt, QwNeonRegister dst, QwNeonRegister src, int shift)
 
void vshl (NeonDataType dt, QwNeonRegister dst, QwNeonRegister src, QwNeonRegister shift)
 
void vshr (NeonDataType dt, DwVfpRegister dst, DwVfpRegister src, int shift)
 
void vshr (NeonDataType dt, QwNeonRegister dst, QwNeonRegister src, int shift)
 
void vsli (NeonSize size, DwVfpRegister dst, DwVfpRegister src, int shift)
 
void vsri (NeonSize size, DwVfpRegister dst, DwVfpRegister src, int shift)
 
void vsra (NeonDataType size, DwVfpRegister dst, DwVfpRegister src, int imm)
 
void vrecpe (QwNeonRegister dst, QwNeonRegister src)
 
void vrsqrte (QwNeonRegister dst, QwNeonRegister src)
 
void vrecps (QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2)
 
void vrsqrts (QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2)
 
void vtst (NeonSize size, QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2)
 
void vceq (QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2)
 
void vceq (NeonSize size, QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2)
 
void vceq (NeonSize size, QwNeonRegister dst, QwNeonRegister src, int value)
 
void vcge (QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2)
 
void vcge (NeonDataType dt, QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2)
 
void vcgt (QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2)
 
void vcgt (NeonDataType dt, QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2)
 
void vclt (NeonSize size, QwNeonRegister dst, QwNeonRegister src, int value)
 
void vrhadd (NeonDataType dt, QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2)
 
void vext (QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2, int bytes)
 
void vzip (NeonSize size, DwVfpRegister src1, DwVfpRegister src2)
 
void vzip (NeonSize size, QwNeonRegister src1, QwNeonRegister src2)
 
void vuzp (NeonSize size, DwVfpRegister src1, DwVfpRegister src2)
 
void vuzp (NeonSize size, QwNeonRegister src1, QwNeonRegister src2)
 
void vrev16 (NeonSize size, QwNeonRegister dst, QwNeonRegister src)
 
void vrev32 (NeonSize size, QwNeonRegister dst, QwNeonRegister src)
 
void vrev64 (NeonSize size, QwNeonRegister dst, QwNeonRegister src)
 
void vtrn (NeonSize size, DwVfpRegister src1, DwVfpRegister src2)
 
void vtrn (NeonSize size, QwNeonRegister src1, QwNeonRegister src2)
 
void vtbl (DwVfpRegister dst, const NeonListOperand &list, DwVfpRegister index)
 
void vtbx (DwVfpRegister dst, const NeonListOperand &list, DwVfpRegister index)
 
void vcnt (QwNeonRegister dst, QwNeonRegister src)
 
void nop (int type=0)
 
void push (Register src, Condition cond=al)
 
void pop (Register dst, Condition cond=al)
 
void pop ()
 
void vpush (QwNeonRegister src, Condition cond=al)
 
void vpush (DwVfpRegister src, Condition cond=al)
 
void vpush (SwVfpRegister src, Condition cond=al)
 
void vpop (DwVfpRegister dst, Condition cond=al)
 
void jmp (Label *L)
 
int SizeOfCodeGeneratedSince (Label *label)
 
int InstructionsGeneratedSince (Label *label)
 
bool ImmediateFitsAddrMode2Instruction (int32_t imm32)
 
void MaybeEmitOutOfLineConstantPool ()
 
void RecordDeoptReason (DeoptimizeReason reason, uint32_t node_id, SourcePosition position, int id)
 
void RecordConstPool (int size)
 
void db (uint8_t data)
 
void dd (uint32_t data)
 
void dq (uint64_t data)
 
void dp (uintptr_t data)
 
Instr instr_at (int pos)
 
void instr_at_put (int pos, Instr instr)
 
void BlockConstPoolFor (int instructions)
 
void CheckConstPool (bool force_emit, bool require_jump)
 
void MaybeCheckConstPool ()
 
void Move32BitImmediate (Register rd, const Operand &x, Condition cond=al)
 
Handle< Coderelative_code_target_object_handle_at (Address pc_) const
 
 Assembler (const MaybeAssemblerZone &, const AssemblerOptions &, std::unique_ptr< AssemblerBuffer >={})
 
 ~Assembler () override
 
Zonezone () const
 
void AbortedCodeGeneration () override
 
void Reset ()
 
void GetCode (LocalIsolate *isolate, CodeDesc *desc, SafepointTableBuilderBase *safepoint_table_builder, int handler_table_offset)
 
void GetCode (Isolate *isolate, CodeDesc *desc)
 
void GetCode (LocalIsolate *isolate, CodeDesc *desc)
 
void Align (int m)
 
void DataAlign (int m)
 
void CodeTargetAlign ()
 
void LoopHeaderAlign ()
 
void Unreachable ()
 
void bind (Label *label)
 
void RecordRelocInfo (RelocInfo::Mode rmode, intptr_t data=0, ConstantPoolMode constant_pool_mode=NEEDS_POOL_ENTRY)
 
void near_jump (int offset, RelocInfo::Mode rmode)
 
void near_call (int offset, RelocInfo::Mode rmode)
 
void near_call (HeapNumberRequest request)
 
Handle< Codecode_target_object_handle_at (Address pc)
 
EmbeddedObjectIndex embedded_object_index_referenced_from (Address pc)
 
void set_embedded_object_index_referenced_from (Address p, EmbeddedObjectIndex index)
 
Handle< HeapObjecttarget_object_handle_at (Address pc)
 
uint64_t SizeOfGeneratedCode () const
 
uint64_t SizeOfCodeGeneratedSince (const Label *label)
 
uint64_t InstructionsGeneratedSince (const Label *label)
 
void EmitPoolGuard ()
 
void StartBlockVeneerPool ()
 
void EndBlockVeneerPool ()
 
bool is_veneer_pool_blocked () const
 
void RecordDeoptReason (DeoptimizeReason reason, uint32_t node_id, SourcePosition position, int id)
 
int buffer_space () const
 
void RecordConstPool (int size)
 
void br (const Register &xn)
 
void blr (const Register &xn)
 
void ret (const Register &xn=lr)
 
void b (Label *label)
 
void b (Label *label, Condition cond)
 
void b (int imm26)
 
void b (int imm19, Condition cond)
 
void bc (Label *label, Condition cond)
 
void bc (int imm19, Condition cond)
 
void bl (Label *label)
 
void bl (int imm26)
 
void cbz (const Register &rt, Label *label)
 
void cbz (const Register &rt, int imm19)
 
void cbnz (const Register &rt, Label *label)
 
void cbnz (const Register &rt, int imm19)
 
void tbz (const Register &rt, unsigned bit_pos, Label *label)
 
void tbz (const Register &rt, unsigned bit_pos, int imm14)
 
void tbnz (const Register &rt, unsigned bit_pos, Label *label)
 
void tbnz (const Register &rt, unsigned bit_pos, int imm14)
 
void adr (const Register &rd, Label *label)
 
void adr (const Register &rd, int imm21)
 
void add (const Register &rd, const Register &rn, const Operand &operand)
 
void adds (const Register &rd, const Register &rn, const Operand &operand)
 
void cmn (const Register &rn, const Operand &operand)
 
void sub (const Register &rd, const Register &rn, const Operand &operand)
 
void subs (const Register &rd, const Register &rn, const Operand &operand)
 
void cmp (const Register &rn, const Operand &operand)
 
void neg (const Register &rd, const Operand &operand)
 
void negs (const Register &rd, const Operand &operand)
 
void adc (const Register &rd, const Register &rn, const Operand &operand)
 
void adcs (const Register &rd, const Register &rn, const Operand &operand)
 
void sbc (const Register &rd, const Register &rn, const Operand &operand)
 
void sbcs (const Register &rd, const Register &rn, const Operand &operand)
 
void ngc (const Register &rd, const Operand &operand)
 
void ngcs (const Register &rd, const Operand &operand)
 
void and_ (const Register &rd, const Register &rn, const Operand &operand)
 
void ands (const Register &rd, const Register &rn, const Operand &operand)
 
void tst (const Register &rn, const Operand &operand)
 
void bic (const Register &rd, const Register &rn, const Operand &operand)
 
void bics (const Register &rd, const Register &rn, const Operand &operand)
 
void and_ (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void bic (const VRegister &vd, const int imm8, const int left_shift=0)
 
void bic (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void bif (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void bit (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void bsl (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void pmul (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void movi (const VRegister &vd, const uint64_t imm, Shift shift=LSL, const int shift_amount=0)
 
void mvn (const VRegister &vd, const VRegister &vn)
 
void mvni (const VRegister &vd, const int imm8, Shift shift=LSL, const int shift_amount=0)
 
void suqadd (const VRegister &vd, const VRegister &vn)
 
void usqadd (const VRegister &vd, const VRegister &vn)
 
void abs (const VRegister &vd, const VRegister &vn)
 
void sqabs (const VRegister &vd, const VRegister &vn)
 
void neg (const VRegister &vd, const VRegister &vn)
 
void sqneg (const VRegister &vd, const VRegister &vn)
 
void not_ (const VRegister &vd, const VRegister &vn)
 
void xtn (const VRegister &vd, const VRegister &vn)
 
void xtn2 (const VRegister &vd, const VRegister &vn)
 
void sqxtn (const VRegister &vd, const VRegister &vn)
 
void sqxtn2 (const VRegister &vd, const VRegister &vn)
 
void uqxtn (const VRegister &vd, const VRegister &vn)
 
void uqxtn2 (const VRegister &vd, const VRegister &vn)
 
void sqxtun (const VRegister &vd, const VRegister &vn)
 
void sqxtun2 (const VRegister &vd, const VRegister &vn)
 
void mov (const VRegister &vd, const VRegister &vn)
 
void orn (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void eor (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void orr (const Register &rd, const Register &rn, const Operand &operand)
 
void orr (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void orr (const VRegister &vd, const int imm8, const int left_shift=0)
 
void orn (const Register &rd, const Register &rn, const Operand &operand)
 
void eor (const Register &rd, const Register &rn, const Operand &operand)
 
void eon (const Register &rd, const Register &rn, const Operand &operand)
 
void lslv (const Register &rd, const Register &rn, const Register &rm)
 
void lsrv (const Register &rd, const Register &rn, const Register &rm)
 
void asrv (const Register &rd, const Register &rn, const Register &rm)
 
void rorv (const Register &rd, const Register &rn, const Register &rm)
 
void bfm (const Register &rd, const Register &rn, int immr, int imms)
 
void sbfm (const Register &rd, const Register &rn, int immr, int imms)
 
void ubfm (const Register &rd, const Register &rn, int immr, int imms)
 
void bfi (const Register &rd, const Register &rn, int lsb, int width)
 
void bfxil (const Register &rd, const Register &rn, int lsb, int width)
 
void asr (const Register &rd, const Register &rn, int shift)
 
void sbfiz (const Register &rd, const Register &rn, int lsb, int width)
 
void sbfx (const Register &rd, const Register &rn, int lsb, int width)
 
void sxtb (const Register &rd, const Register &rn)
 
void sxth (const Register &rd, const Register &rn)
 
void sxtw (const Register &rd, const Register &rn)
 
void lsl (const Register &rd, const Register &rn, int shift)
 
void lsr (const Register &rd, const Register &rn, int shift)
 
void ubfiz (const Register &rd, const Register &rn, int lsb, int width)
 
void ubfx (const Register &rd, const Register &rn, int lsb, int width)
 
void uxtb (const Register &rd, const Register &rn)
 
void uxth (const Register &rd, const Register &rn)
 
void uxtw (const Register &rd, const Register &rn)
 
void extr (const Register &rd, const Register &rn, const Register &rm, int lsb)
 
void csel (const Register &rd, const Register &rn, const Register &rm, Condition cond)
 
void csinc (const Register &rd, const Register &rn, const Register &rm, Condition cond)
 
void csinv (const Register &rd, const Register &rn, const Register &rm, Condition cond)
 
void csneg (const Register &rd, const Register &rn, const Register &rm, Condition cond)
 
void cset (const Register &rd, Condition cond)
 
void csetm (const Register &rd, Condition cond)
 
void cinc (const Register &rd, const Register &rn, Condition cond)
 
void cinv (const Register &rd, const Register &rn, Condition cond)
 
void cneg (const Register &rd, const Register &rn, Condition cond)
 
void ror (const Register &rd, const Register &rs, unsigned shift)
 
void ccmn (const Register &rn, const Operand &operand, StatusFlags nzcv, Condition cond)
 
void ccmp (const Register &rn, const Operand &operand, StatusFlags nzcv, Condition cond)
 
void mul (const Register &rd, const Register &rn, const Register &rm)
 
void madd (const Register &rd, const Register &rn, const Register &rm, const Register &ra)
 
void mneg (const Register &rd, const Register &rn, const Register &rm)
 
void msub (const Register &rd, const Register &rn, const Register &rm, const Register &ra)
 
void smull (const Register &rd, const Register &rn, const Register &rm)
 
void smulh (const Register &rd, const Register &rn, const Register &rm)
 
void umulh (const Register &rd, const Register &rn, const Register &rm)
 
void smaddl (const Register &rd, const Register &rn, const Register &rm, const Register &ra)
 
void umaddl (const Register &rd, const Register &rn, const Register &rm, const Register &ra)
 
void smsubl (const Register &rd, const Register &rn, const Register &rm, const Register &ra)
 
void umsubl (const Register &rd, const Register &rn, const Register &rm, const Register &ra)
 
void sdiv (const Register &rd, const Register &rn, const Register &rm)
 
void udiv (const Register &rd, const Register &rn, const Register &rm)
 
void rbit (const Register &rd, const Register &rn)
 
void rev16 (const Register &rd, const Register &rn)
 
void rev32 (const Register &rd, const Register &rn)
 
void rev (const Register &rd, const Register &rn)
 
void clz (const Register &rd, const Register &rn)
 
void cls (const Register &rd, const Register &rn)
 
void abs (const Register &rd, const Register &rn)
 
void cnt (const Register &rd, const Register &rn)
 
void ctz (const Register &rd, const Register &rn)
 
void pacib1716 ()
 
void pacibsp ()
 
void autib1716 ()
 
void autibsp ()
 
void ldr (const CPURegister &rt, const MemOperand &src)
 
void str (const CPURegister &rt, const MemOperand &dst)
 
void ldrsw (const Register &rt, const MemOperand &src)
 
void ldrb (const Register &rt, const MemOperand &src)
 
void strb (const Register &rt, const MemOperand &dst)
 
void ldrsb (const Register &rt, const MemOperand &src)
 
void ldrh (const Register &rt, const MemOperand &src)
 
void strh (const Register &rt, const MemOperand &dst)
 
void ldrsh (const Register &rt, const MemOperand &src)
 
void ldp (const CPURegister &rt, const CPURegister &rt2, const MemOperand &src)
 
void stp (const CPURegister &rt, const CPURegister &rt2, const MemOperand &dst)
 
void ldpsw (const Register &rt, const Register &rt2, const MemOperand &src)
 
void ldr_pcrel (const CPURegister &rt, int imm19)
 
void ldr (const CPURegister &rt, const Immediate &imm)
 
void ldr (const CPURegister &rt, const Operand &operand)
 
void ldar (const Register &rt, const Register &rn)
 
void ldaxr (const Register &rt, const Register &rn)
 
void stlr (const Register &rt, const Register &rn)
 
void stlxr (const Register &rs, const Register &rt, const Register &rn)
 
void ldarb (const Register &rt, const Register &rn)
 
void ldaxrb (const Register &rt, const Register &rn)
 
void stlrb (const Register &rt, const Register &rn)
 
void stlxrb (const Register &rs, const Register &rt, const Register &rn)
 
void ldarh (const Register &rt, const Register &rn)
 
void ldaxrh (const Register &rt, const Register &rn)
 
void stlrh (const Register &rt, const Register &rn)
 
void stlxrh (const Register &rs, const Register &rt, const Register &rn)
 
void cas (const Register &rs, const Register &rt, const MemOperand &src)
 
void casa (const Register &rs, const Register &rt, const MemOperand &src)
 
void casl (const Register &rs, const Register &rt, const MemOperand &src)
 
void casal (const Register &rs, const Register &rt, const MemOperand &src)
 
void casb (const Register &rs, const Register &rt, const MemOperand &src)
 
void casab (const Register &rs, const Register &rt, const MemOperand &src)
 
void caslb (const Register &rs, const Register &rt, const MemOperand &src)
 
void casalb (const Register &rs, const Register &rt, const MemOperand &src)
 
void cash (const Register &rs, const Register &rt, const MemOperand &src)
 
void casah (const Register &rs, const Register &rt, const MemOperand &src)
 
void caslh (const Register &rs, const Register &rt, const MemOperand &src)
 
void casalh (const Register &rs, const Register &rt, const MemOperand &src)
 
void casp (const Register &rs, const Register &rs2, const Register &rt, const Register &rt2, const MemOperand &src)
 
void caspa (const Register &rs, const Register &rs2, const Register &rt, const Register &rt2, const MemOperand &src)
 
void caspl (const Register &rs, const Register &rs2, const Register &rt, const Register &rt2, const MemOperand &src)
 
void caspal (const Register &rs, const Register &rs2, const Register &rt, const Register &rt2, const MemOperand &src)
 
void ldaddb (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldaddab (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldaddlb (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldaddalb (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldaddh (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldaddah (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldaddlh (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldaddalh (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldadd (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldadda (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldaddl (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldaddal (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldclrb (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldclrab (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldclrlb (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldclralb (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldclrh (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldclrah (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldclrlh (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldclralh (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldclr (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldclra (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldclrl (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldclral (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldeorb (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldeorab (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldeorlb (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldeoralb (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldeorh (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldeorah (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldeorlh (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldeoralh (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldeor (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldeora (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldeorl (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldeoral (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldsetb (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldsetab (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldsetlb (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldsetalb (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldseth (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldsetah (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldsetlh (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldsetalh (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldset (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldseta (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldsetl (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldsetal (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldsmaxb (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldsmaxab (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldsmaxlb (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldsmaxalb (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldsmaxh (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldsmaxah (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldsmaxlh (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldsmaxalh (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldsmax (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldsmaxa (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldsmaxl (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldsmaxal (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldsminb (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldsminab (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldsminlb (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldsminalb (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldsminh (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldsminah (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldsminlh (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldsminalh (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldsmin (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldsmina (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldsminl (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldsminal (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldumaxb (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldumaxab (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldumaxlb (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldumaxalb (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldumaxh (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldumaxah (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldumaxlh (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldumaxalh (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldumax (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldumaxa (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldumaxl (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldumaxal (const Register &rs, const Register &rt, const MemOperand &src)
 
void lduminb (const Register &rs, const Register &rt, const MemOperand &src)
 
void lduminab (const Register &rs, const Register &rt, const MemOperand &src)
 
void lduminlb (const Register &rs, const Register &rt, const MemOperand &src)
 
void lduminalb (const Register &rs, const Register &rt, const MemOperand &src)
 
void lduminh (const Register &rs, const Register &rt, const MemOperand &src)
 
void lduminah (const Register &rs, const Register &rt, const MemOperand &src)
 
void lduminlh (const Register &rs, const Register &rt, const MemOperand &src)
 
void lduminalh (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldumin (const Register &rs, const Register &rt, const MemOperand &src)
 
void ldumina (const Register &rs, const Register &rt, const MemOperand &src)
 
void lduminl (const Register &rs, const Register &rt, const MemOperand &src)
 
void lduminal (const Register &rs, const Register &rt, const MemOperand &src)
 
void staddb (const Register &rs, const MemOperand &src)
 
void staddlb (const Register &rs, const MemOperand &src)
 
void staddh (const Register &rs, const MemOperand &src)
 
void staddlh (const Register &rs, const MemOperand &src)
 
void stadd (const Register &rs, const MemOperand &src)
 
void staddl (const Register &rs, const MemOperand &src)
 
void stclrb (const Register &rs, const MemOperand &src)
 
void stclrlb (const Register &rs, const MemOperand &src)
 
void stclrh (const Register &rs, const MemOperand &src)
 
void stclrlh (const Register &rs, const MemOperand &src)
 
void stclr (const Register &rs, const MemOperand &src)
 
void stclrl (const Register &rs, const MemOperand &src)
 
void steorb (const Register &rs, const MemOperand &src)
 
void steorlb (const Register &rs, const MemOperand &src)
 
void steorh (const Register &rs, const MemOperand &src)
 
void steorlh (const Register &rs, const MemOperand &src)
 
void steor (const Register &rs, const MemOperand &src)
 
void steorl (const Register &rs, const MemOperand &src)
 
void stsetb (const Register &rs, const MemOperand &src)
 
void stsetlb (const Register &rs, const MemOperand &src)
 
void stseth (const Register &rs, const MemOperand &src)
 
void stsetlh (const Register &rs, const MemOperand &src)
 
void stset (const Register &rs, const MemOperand &src)
 
void stsetl (const Register &rs, const MemOperand &src)
 
void stsmaxb (const Register &rs, const MemOperand &src)
 
void stsmaxlb (const Register &rs, const MemOperand &src)
 
void stsmaxh (const Register &rs, const MemOperand &src)
 
void stsmaxlh (const Register &rs, const MemOperand &src)
 
void stsmax (const Register &rs, const MemOperand &src)
 
void stsmaxl (const Register &rs, const MemOperand &src)
 
void stsminb (const Register &rs, const MemOperand &src)
 
void stsminlb (const Register &rs, const MemOperand &src)
 
void stsminh (const Register &rs, const MemOperand &src)
 
void stsminlh (const Register &rs, const MemOperand &src)
 
void stsmin (const Register &rs, const MemOperand &src)
 
void stsminl (const Register &rs, const MemOperand &src)
 
void stumaxb (const Register &rs, const MemOperand &src)
 
void stumaxlb (const Register &rs, const MemOperand &src)
 
void stumaxh (const Register &rs, const MemOperand &src)
 
void stumaxlh (const Register &rs, const MemOperand &src)
 
void stumax (const Register &rs, const MemOperand &src)
 
void stumaxl (const Register &rs, const MemOperand &src)
 
void stuminb (const Register &rs, const MemOperand &src)
 
void stuminlb (const Register &rs, const MemOperand &src)
 
void stuminh (const Register &rs, const MemOperand &src)
 
void stuminlh (const Register &rs, const MemOperand &src)
 
void stumin (const Register &rs, const MemOperand &src)
 
void stuminl (const Register &rs, const MemOperand &src)
 
void swpb (const Register &rs, const Register &rt, const MemOperand &src)
 
void swpab (const Register &rs, const Register &rt, const MemOperand &src)
 
void swplb (const Register &rs, const Register &rt, const MemOperand &src)
 
void swpalb (const Register &rs, const Register &rt, const MemOperand &src)
 
void swph (const Register &rs, const Register &rt, const MemOperand &src)
 
void swpah (const Register &rs, const Register &rt, const MemOperand &src)
 
void swplh (const Register &rs, const Register &rt, const MemOperand &src)
 
void swpalh (const Register &rs, const Register &rt, const MemOperand &src)
 
void swp (const Register &rs, const Register &rt, const MemOperand &src)
 
void swpa (const Register &rs, const Register &rt, const MemOperand &src)
 
void swpl (const Register &rs, const Register &rt, const MemOperand &src)
 
void swpal (const Register &rs, const Register &rt, const MemOperand &src)
 
void movk (const Register &rd, uint64_t imm, int shift=-1)
 
void movn (const Register &rd, uint64_t imm, int shift=-1)
 
void movz (const Register &rd, uint64_t imm, int shift=-1)
 
void brk (int code)
 
void hlt (int code)
 
void mov (const Register &rd, const Register &rn)
 
void mvn (const Register &rd, const Operand &operand)
 
void mrs (const Register &rt, SystemRegister sysreg)
 
void msr (SystemRegister sysreg, const Register &rt)
 
void hint (SystemHint code)
 
void dmb (BarrierDomain domain, BarrierType type)
 
void dsb (BarrierDomain domain, BarrierType type)
 
void isb ()
 
void csdb ()
 
void bti (BranchTargetIdentifier id)
 
void nop ()
 
void nop (NopMarkerTypes n)
 
void add (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void uhadd (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void sub (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void shadd (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void mul (const VRegister &vd, const VRegister &vn, const VRegister &vm, int vm_index)
 
void mla (const VRegister &vd, const VRegister &vn, const VRegister &vm, int vm_index)
 
void mls (const VRegister &vd, const VRegister &vn, const VRegister &vm, int vm_index)
 
void smlal (const VRegister &vd, const VRegister &vn, const VRegister &vm, int vm_index)
 
void smlal2 (const VRegister &vd, const VRegister &vn, const VRegister &vm, int vm_index)
 
void umlal (const VRegister &vd, const VRegister &vn, const VRegister &vm, int vm_index)
 
void umlal2 (const VRegister &vd, const VRegister &vn, const VRegister &vm, int vm_index)
 
void smlsl (const VRegister &vd, const VRegister &vn, const VRegister &vm, int vm_index)
 
void smlsl2 (const VRegister &vd, const VRegister &vn, const VRegister &vm, int vm_index)
 
void umlsl (const VRegister &vd, const VRegister &vn, const VRegister &vm, int vm_index)
 
void umlsl2 (const VRegister &vd, const VRegister &vn, const VRegister &vm, int vm_index)
 
void smull (const VRegister &vd, const VRegister &vn, const VRegister &vm, int vm_index)
 
void smull2 (const VRegister &vd, const VRegister &vn, const VRegister &vm, int vm_index)
 
void umull (const VRegister &vd, const VRegister &vn, const VRegister &vm, int vm_index)
 
void umull2 (const VRegister &vd, const VRegister &vn, const VRegister &vm, int vm_index)
 
void addhn (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void addhn2 (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void sqdmull (const VRegister &vd, const VRegister &vn, const VRegister &vm, int vm_index)
 
void sqdmull2 (const VRegister &vd, const VRegister &vn, const VRegister &vm, int vm_index)
 
void sqdmlal (const VRegister &vd, const VRegister &vn, const VRegister &vm, int vm_index)
 
void sqdmlal2 (const VRegister &vd, const VRegister &vn, const VRegister &vm, int vm_index)
 
void sqdmlsl (const VRegister &vd, const VRegister &vn, const VRegister &vm, int vm_index)
 
void sqdmlsl2 (const VRegister &vd, const VRegister &vn, const VRegister &vm, int vm_index)
 
void cmeq (const VRegister &vd, const VRegister &vn, int value)
 
void cmge (const VRegister &vd, const VRegister &vn, int value)
 
void cmgt (const VRegister &vd, const VRegister &vn, int value)
 
void cmle (const VRegister &vd, const VRegister &vn, int value)
 
void cmlt (const VRegister &vd, const VRegister &vn, int value)
 
void urhadd (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void cmeq (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void cmge (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void cmgt (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void cmhi (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void cmhs (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void cmtst (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void sshl (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void ushl (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void sqdmlsl (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void sqdmlsl2 (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void sqdmull (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void sqdmull2 (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void sqdmulh (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void sqrdmulh (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void sqdmulh (const VRegister &vd, const VRegister &vn, const VRegister &vm, int vm_index)
 
void sqrdmulh (const VRegister &vd, const VRegister &vn, const VRegister &vm, int vm_index)
 
void umull (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void umull2 (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void raddhn (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void subhn (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void subhn2 (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void raddhn2 (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void rsubhn (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void rsubhn2 (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void sqshl (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void uqshl (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void srshl (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void urshl (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void sqrshl (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void uqrshl (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void sabd (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void uaba (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void sli (const VRegister &vd, const VRegister &vn, int shift)
 
void sri (const VRegister &vd, const VRegister &vn, int shift)
 
void smax (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void smaxp (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void addv (const VRegister &vd, const VRegister &vn)
 
void saddlv (const VRegister &vd, const VRegister &vn)
 
void uaddlv (const VRegister &vd, const VRegister &vn)
 
void fmaxnmv (const VRegister &vd, const VRegister &vn)
 
void fmaxv (const VRegister &vd, const VRegister &vn)
 
void fminnmv (const VRegister &vd, const VRegister &vn)
 
void fminv (const VRegister &vd, const VRegister &vn)
 
void smaxv (const VRegister &vd, const VRegister &vn)
 
void smin (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void sminp (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void sminv (const VRegister &vd, const VRegister &vn)
 
void sdot (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void st1 (const VRegister &vt, const MemOperand &src)
 
void st1 (const VRegister &vt, const VRegister &vt2, const MemOperand &src)
 
void st1 (const VRegister &vt, const VRegister &vt2, const VRegister &vt3, const MemOperand &src)
 
void st1 (const VRegister &vt, const VRegister &vt2, const VRegister &vt3, const VRegister &vt4, const MemOperand &src)
 
void st1 (const VRegister &vt, int lane, const MemOperand &src)
 
void st2 (const VRegister &vt, const VRegister &vt2, const MemOperand &src)
 
void st2 (const VRegister &vt, const VRegister &vt2, int lane, const MemOperand &src)
 
void st3 (const VRegister &vt, const VRegister &vt2, const VRegister &vt3, const MemOperand &src)
 
void st3 (const VRegister &vt, const VRegister &vt2, const VRegister &vt3, int lane, const MemOperand &src)
 
void st4 (const VRegister &vt, const VRegister &vt2, const VRegister &vt3, const VRegister &vt4, const MemOperand &src)
 
void st4 (const VRegister &vt, const VRegister &vt2, const VRegister &vt3, const VRegister &vt4, int lane, const MemOperand &src)
 
void uaddl (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void uaddl2 (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void uaddw (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void uaddw2 (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void saddl (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void saddl2 (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void saddw (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void saddw2 (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void usubl (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void usubl2 (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void usubw (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void ssubl (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void ssubl2 (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void ssubw (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void ssubw2 (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void usubw2 (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void umax (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void umaxp (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void umaxv (const VRegister &vd, const VRegister &vn)
 
void umin (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void uminp (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void uminv (const VRegister &vd, const VRegister &vn)
 
void trn1 (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void trn2 (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void uzp1 (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void uzp2 (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void zip1 (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void zip2 (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void sshr (const VRegister &vd, const VRegister &vn, int shift)
 
void ushr (const VRegister &vd, const VRegister &vn, int shift)
 
void srshr (const VRegister &vd, const VRegister &vn, int shift)
 
void urshr (const VRegister &vd, const VRegister &vn, int shift)
 
void ssra (const VRegister &vd, const VRegister &vn, int shift)
 
void usra (const VRegister &vd, const VRegister &vn, int shift)
 
void srsra (const VRegister &vd, const VRegister &vn, int shift)
 
void ursra (const VRegister &vd, const VRegister &vn, int shift)
 
void shrn (const VRegister &vd, const VRegister &vn, int shift)
 
void shrn2 (const VRegister &vd, const VRegister &vn, int shift)
 
void rshrn (const VRegister &vd, const VRegister &vn, int shift)
 
void rshrn2 (const VRegister &vd, const VRegister &vn, int shift)
 
void uqshrn (const VRegister &vd, const VRegister &vn, int shift)
 
void uqshrn2 (const VRegister &vd, const VRegister &vn, int shift)
 
void uqrshrn (const VRegister &vd, const VRegister &vn, int shift)
 
void uqrshrn2 (const VRegister &vd, const VRegister &vn, int shift)
 
void sqshrn (const VRegister &vd, const VRegister &vn, int shift)
 
void sqshrn2 (const VRegister &vd, const VRegister &vn, int shift)
 
void sqrshrn (const VRegister &vd, const VRegister &vn, int shift)
 
void sqrshrn2 (const VRegister &vd, const VRegister &vn, int shift)
 
void sqshrun (const VRegister &vd, const VRegister &vn, int shift)
 
void sqshrun2 (const VRegister &vd, const VRegister &vn, int shift)
 
void sqrshrun (const VRegister &vd, const VRegister &vn, int shift)
 
void sqrshrun2 (const VRegister &vd, const VRegister &vn, int shift)
 
void frecps (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void frecpe (const VRegister &vd, const VRegister &vn)
 
void frsqrte (const VRegister &vd, const VRegister &vn)
 
void frsqrts (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void sabal (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void sabal2 (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void uabal (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void uabal2 (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void sabdl (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void sabdl2 (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void uabdl (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void uabdl2 (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void pmull (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void pmull2 (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void smlal (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void smlal2 (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void umlal (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void umlal2 (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void smlsl (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void smlsl2 (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void umlsl (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void umlsl2 (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void smull (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void smull2 (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void sqdmlal (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void sqdmlal2 (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void uabd (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void saba (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void fmov (const VRegister &fd, double imm)
 
void fmov (const VRegister &fd, float imm)
 
void fmov (const Register &rd, const VRegister &fn)
 
void fmov (const VRegister &fd, const Register &rn)
 
void fmov (const VRegister &fd, const VRegister &fn)
 
void fmov (const VRegister &vd, int index, const Register &rn)
 
void fmov (const Register &rd, const VRegister &vn, int index)
 
void fadd (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void fsub (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void fmul (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void fcmeq (const VRegister &vd, const VRegister &vn, double imm)
 
void fcmgt (const VRegister &vd, const VRegister &vn, double imm)
 
void fcmge (const VRegister &vd, const VRegister &vn, double imm)
 
void fcmle (const VRegister &vd, const VRegister &vn, double imm)
 
void fcmlt (const VRegister &vd, const VRegister &vn, double imm)
 
void fabd (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void faddp (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void faddp (const VRegister &vd, const VRegister &vn)
 
void fmaxp (const VRegister &vd, const VRegister &vn)
 
void fmaxnmp (const VRegister &vd, const VRegister &vn)
 
void fminnmp (const VRegister &vd, const VRegister &vn)
 
void fmla (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void fmls (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void fmulx (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void facge (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void facgt (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void fmul (const VRegister &vd, const VRegister &vn, const VRegister &vm, int vm_index)
 
void fmla (const VRegister &vd, const VRegister &vn, const VRegister &vm, int vm_index)
 
void fmls (const VRegister &vd, const VRegister &vn, const VRegister &vm, int vm_index)
 
void fmulx (const VRegister &vd, const VRegister &vn, const VRegister &vm, int vm_index)
 
void fcmeq (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void fcmgt (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void fcmge (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void fmaxp (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void fminp (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void fminp (const VRegister &vd, const VRegister &vn)
 
void fmaxnmp (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void fminnmp (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void fmadd (const VRegister &vd, const VRegister &vn, const VRegister &vm, const VRegister &va)
 
void fmsub (const VRegister &vd, const VRegister &vn, const VRegister &vm, const VRegister &va)
 
void fnmadd (const VRegister &vd, const VRegister &vn, const VRegister &vm, const VRegister &va)
 
void fnmsub (const VRegister &vd, const VRegister &vn, const VRegister &vm, const VRegister &va)
 
void fnmul (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void frecpx (const VRegister &vd, const VRegister &vn)
 
void fdiv (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void fmax (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void fmin (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void fmaxnm (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void fminnm (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void fabs (const VRegister &vd, const VRegister &vn)
 
void fneg (const VRegister &vd, const VRegister &vn)
 
void fsqrt (const VRegister &vd, const VRegister &vn)
 
void frinta (const VRegister &vd, const VRegister &vn)
 
void frinti (const VRegister &vd, const VRegister &vn)
 
void frintm (const VRegister &vd, const VRegister &vn)
 
void frintn (const VRegister &vd, const VRegister &vn)
 
void frintp (const VRegister &vd, const VRegister &vn)
 
void frintx (const VRegister &vd, const VRegister &vn)
 
void frintz (const VRegister &vd, const VRegister &vn)
 
void fcmp (const VRegister &vn, const VRegister &vm)
 
void fcmp (const VRegister &vn, double value)
 
void fccmp (const VRegister &vn, const VRegister &vm, StatusFlags nzcv, Condition cond)
 
void fcsel (const VRegister &vd, const VRegister &vn, const VRegister &vm, Condition cond)
 
void NEONFPConvertToInt (const Register &rd, const VRegister &vn, Instr op)
 
void NEONFPConvertToInt (const VRegister &vd, const VRegister &vn, Instr op)
 
void fcvt (const VRegister &vd, const VRegister &vn)
 
void fcvtl (const VRegister &vd, const VRegister &vn)
 
void fcvtl2 (const VRegister &vd, const VRegister &vn)
 
void fcvtn (const VRegister &vd, const VRegister &vn)
 
void fcvtn2 (const VRegister &vd, const VRegister &vn)
 
void fcvtxn (const VRegister &vd, const VRegister &vn)
 
void fcvtxn2 (const VRegister &vd, const VRegister &vn)
 
void fcvtas (const Register &rd, const VRegister &vn)
 
void fcvtau (const Register &rd, const VRegister &vn)
 
void fcvtas (const VRegister &vd, const VRegister &vn)
 
void fcvtau (const VRegister &vd, const VRegister &vn)
 
void fcvtms (const Register &rd, const VRegister &vn)
 
void fcvtmu (const Register &rd, const VRegister &vn)
 
void fcvtms (const VRegister &vd, const VRegister &vn)
 
void fcvtmu (const VRegister &vd, const VRegister &vn)
 
void fcvtns (const Register &rd, const VRegister &vn)
 
void fjcvtzs (const Register &rd, const VRegister &vn)
 
void fcvtnu (const Register &rd, const VRegister &vn)
 
void fcvtns (const VRegister &rd, const VRegister &vn)
 
void fcvtnu (const VRegister &rd, const VRegister &vn)
 
void fcvtzs (const Register &rd, const VRegister &vn, int fbits=0)
 
void fcvtzu (const Register &rd, const VRegister &vn, int fbits=0)
 
void fcvtzs (const VRegister &vd, const VRegister &vn, int fbits=0)
 
void fcvtzu (const VRegister &vd, const VRegister &vn, int fbits=0)
 
void fcvtps (const Register &rd, const VRegister &vn)
 
void fcvtpu (const Register &rd, const VRegister &vn)
 
void fcvtps (const VRegister &vd, const VRegister &vn)
 
void fcvtpu (const VRegister &vd, const VRegister &vn)
 
void scvtf (const VRegister &fd, const Register &rn, int fbits=0)
 
void ucvtf (const VRegister &fd, const Register &rn, int fbits=0)
 
void scvtf (const VRegister &fd, const VRegister &vn, int fbits=0)
 
void ucvtf (const VRegister &fd, const VRegister &vn, int fbits=0)
 
void ext (const VRegister &vd, const VRegister &vn, const VRegister &vm, int index)
 
void dup (const VRegister &vd, const VRegister &vn, int vn_index)
 
void dup (const VRegister &vd, const Register &rn)
 
void ins (const VRegister &vd, int vd_index, const Register &rn)
 
void mov (const VRegister &vd, int vd_index, const Register &rn)
 
void umov (const Register &rd, const VRegister &vn, int vn_index)
 
void mov (const Register &rd, const VRegister &vn, int vn_index)
 
void mov (const VRegister &vd, const VRegister &vn, int vn_index)
 
void ins (const VRegister &vd, int vd_index, const VRegister &vn, int vn_index)
 
void mov (const VRegister &vd, int vd_index, const VRegister &vn, int vn_index)
 
void smov (const Register &rd, const VRegister &vn, int vn_index)
 
void ld1 (const VRegister &vt, const MemOperand &src)
 
void ld1 (const VRegister &vt, const VRegister &vt2, const MemOperand &src)
 
void ld1 (const VRegister &vt, const VRegister &vt2, const VRegister &vt3, const MemOperand &src)
 
void ld1 (const VRegister &vt, const VRegister &vt2, const VRegister &vt3, const VRegister &vt4, const MemOperand &src)
 
void ld1 (const VRegister &vt, int lane, const MemOperand &src)
 
void ld1r (const VRegister &vt, const MemOperand &src)
 
void ld2 (const VRegister &vt, const VRegister &vt2, const MemOperand &src)
 
void ld2 (const VRegister &vt, const VRegister &vt2, int lane, const MemOperand &src)
 
void ld2r (const VRegister &vt, const VRegister &vt2, const MemOperand &src)
 
void ld3 (const VRegister &vt, const VRegister &vt2, const VRegister &vt3, const MemOperand &src)
 
void ld3 (const VRegister &vt, const VRegister &vt2, const VRegister &vt3, int lane, const MemOperand &src)
 
void ld3r (const VRegister &vt, const VRegister &vt2, const VRegister &vt3, const MemOperand &src)
 
void ld4 (const VRegister &vt, const VRegister &vt2, const VRegister &vt3, const VRegister &vt4, const MemOperand &src)
 
void ld4 (const VRegister &vt, const VRegister &vt2, const VRegister &vt3, const VRegister &vt4, int lane, const MemOperand &src)
 
void ld4r (const VRegister &vt, const VRegister &vt2, const VRegister &vt3, const VRegister &vt4, const MemOperand &src)
 
void cls (const VRegister &vd, const VRegister &vn)
 
void clz (const VRegister &vd, const VRegister &vn)
 
void cnt (const VRegister &vd, const VRegister &vn)
 
void rbit (const VRegister &vd, const VRegister &vn)
 
void rev16 (const VRegister &vd, const VRegister &vn)
 
void rev32 (const VRegister &vd, const VRegister &vn)
 
void rev64 (const VRegister &vd, const VRegister &vn)
 
void ursqrte (const VRegister &vd, const VRegister &vn)
 
void urecpe (const VRegister &vd, const VRegister &vn)
 
void sadalp (const VRegister &vd, const VRegister &vn)
 
void saddlp (const VRegister &vd, const VRegister &vn)
 
void uaddlp (const VRegister &vd, const VRegister &vn)
 
void uadalp (const VRegister &vd, const VRegister &vn)
 
void shl (const VRegister &vd, const VRegister &vn, int shift)
 
void sqshl (const VRegister &vd, const VRegister &vn, int shift)
 
void sqshlu (const VRegister &vd, const VRegister &vn, int shift)
 
void uqshl (const VRegister &vd, const VRegister &vn, int shift)
 
void sshll (const VRegister &vd, const VRegister &vn, int shift)
 
void sshll2 (const VRegister &vd, const VRegister &vn, int shift)
 
void sxtl (const VRegister &vd, const VRegister &vn)
 
void sxtl2 (const VRegister &vd, const VRegister &vn)
 
void ushll (const VRegister &vd, const VRegister &vn, int shift)
 
void ushll2 (const VRegister &vd, const VRegister &vn, int shift)
 
void shll (const VRegister &vd, const VRegister &vn, int shift)
 
void shll2 (const VRegister &vd, const VRegister &vn, int shift)
 
void uxtl (const VRegister &vd, const VRegister &vn)
 
void uxtl2 (const VRegister &vd, const VRegister &vn)
 
void srhadd (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void uhsub (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void shsub (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void uqadd (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void sqadd (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void uqsub (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void sqsub (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void addp (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void addp (const VRegister &vd, const VRegister &vn)
 
void mla (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void mls (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void mul (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void tbl (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void tbl (const VRegister &vd, const VRegister &vn, const VRegister &vn2, const VRegister &vm)
 
void tbl (const VRegister &vd, const VRegister &vn, const VRegister &vn2, const VRegister &vn3, const VRegister &vm)
 
void tbl (const VRegister &vd, const VRegister &vn, const VRegister &vn2, const VRegister &vn3, const VRegister &vn4, const VRegister &vm)
 
void tbx (const VRegister &vd, const VRegister &vn, const VRegister &vm)
 
void tbx (const VRegister &vd, const VRegister &vn, const VRegister &vn2, const VRegister &vm)
 
void tbx (const VRegister &vd, const VRegister &vn, const VRegister &vn2, const VRegister &vn3, const VRegister &vm)
 
void tbx (const VRegister &vd, const VRegister &vn, const VRegister &vn2, const VRegister &vn3, const VRegister &vn4, const VRegister &vm)
 
void dci (Instr raw_inst)
 
void dc8 (uint8_t data)
 
void dc32 (uint32_t data)
 
void dc64 (uint64_t data)
 
void dcptr (Label *label)
 
void bcax (const VRegister &vd, const VRegister &vn, const VRegister &vm, const VRegister &va)
 
void eor3 (const VRegister &vd, const VRegister &vn, const VRegister &vm, const VRegister &va)
 
void EmitStringData (const char *string)
 
void WriteJumpTableEntry (Label *label, int table_pos)
 
void debug (const char *message, uint32_t code, Instr params=BREAK)
 
void db (uint8_t data)
 
void dd (uint32_t data)
 
void dq (uint64_t data)
 
void dp (uintptr_t data)
 
Instructionpc () const
 
InstructionInstructionAt (ptrdiff_t offset) const
 
ptrdiff_t InstructionOffset (Instruction *instr) const
 
void MaybeEmitOutOfLineConstantPool ()
 
void ForceConstantPoolEmissionWithoutJump ()
 
void ForceConstantPoolEmissionWithJump ()
 
void EmitConstPoolWithJumpIfNeeded (size_t margin=0)
 
intptr_t MaxPCOffsetAfterVeneerPoolIfEmittedNow (size_t margin)
 
bool ShouldEmitVeneer (int max_reachable_pc, size_t margin)
 
bool ShouldEmitVeneers (size_t margin=kVeneerDistanceMargin)
 
void RecordVeneerPool (int location_offset, int size)
 
void EmitVeneers (bool force_emit, bool need_protection, size_t margin=kVeneerDistanceMargin)
 
void EmitVeneersGuard ()
 
void CheckVeneerPool (bool force_emit, bool require_jump, size_t margin=kVeneerDistanceMargin)
 
 Assembler (const AssemblerOptions &, std::unique_ptr< AssemblerBuffer >={})
 
 Assembler (const MaybeAssemblerZone &, const AssemblerOptions &options, std::unique_ptr< AssemblerBuffer > buffer={})
 
void GetCode (LocalIsolate *isolate, CodeDesc *desc, SafepointTableBuilder *safepoint_table_builder, int handler_table_offset)
 
void GetCode (Isolate *isolate, CodeDesc *desc)
 
void GetCode (LocalIsolate *isolate, CodeDesc *desc)
 
void FinalizeJumpOptimizationInfo ()
 
void MaybeEmitOutOfLineConstantPool ()
 
void Align (int m)
 
void DataAlign (int m)
 
void Nop (int bytes=1)
 
void CodeTargetAlign ()
 
void LoopHeaderAlign ()
 
void pushad ()
 
void popad ()
 
void pushfd ()
 
void popfd ()
 
void push (const Immediate &x)
 
void push_imm32 (int32_t imm32)
 
void push (Register src)
 
void push (Operand src)
 
void pop (Register dst)
 
void pop (Operand dst)
 
void leave ()
 
void mov_b (Register dst, Register src)
 
void mov_b (Register dst, Operand src)
 
void mov_b (Register dst, int8_t imm8)
 
void mov_b (Operand dst, int8_t src)
 
void mov_b (Operand dst, const Immediate &src)
 
void mov_b (Operand dst, Register src)
 
void mov_w (Register dst, Operand src)
 
void mov_w (Operand dst, int16_t src)
 
void mov_w (Operand dst, const Immediate &src)
 
void mov_w (Operand dst, Register src)
 
void mov (Register dst, int32_t imm32)
 
void mov (Register dst, const Immediate &x)
 
void mov (Register dst, Handle< HeapObject > handle)
 
void mov (Register dst, Operand src)
 
void mov (Register dst, Register src)
 
void mov (Operand dst, const Immediate &x)
 
void mov (Operand dst, Handle< HeapObject > handle)
 
void mov (Operand dst, Register src)
 
void mov (Operand dst, Address src, RelocInfo::Mode)
 
void movsx_b (Register dst, Register src)
 
void movsx_b (Register dst, Operand src)
 
void movsx_w (Register dst, Register src)
 
void movsx_w (Register dst, Operand src)
 
void movzx_b (Register dst, Register src)
 
void movzx_b (Register dst, Operand src)
 
void movzx_w (Register dst, Register src)
 
void movzx_w (Register dst, Operand src)
 
void movq (XMMRegister dst, Operand src)
 
void movq (Operand dst, XMMRegister src)
 
void cmov (Condition cc, Register dst, Register src)
 
void cmov (Condition cc, Register dst, Operand src)
 
void cld ()
 
void rep_movs ()
 
void rep_stos ()
 
void stos ()
 
void xadd (Operand dst, Register src)
 
void xadd_b (Operand dst, Register src)
 
void xadd_w (Operand dst, Register src)
 
void xchg (Register dst, Register src)
 
void xchg (Register dst, Operand src)
 
void xchg_b (Register reg, Operand op)
 
void xchg_w (Register reg, Operand op)
 
void lock ()
 
void cmpxchg (Operand dst, Register src)
 
void cmpxchg_b (Operand dst, Register src)
 
void cmpxchg_w (Operand dst, Register src)
 
void cmpxchg8b (Operand dst)
 
void mfence ()
 
void lfence ()
 
void pause ()
 
void adc (Register dst, int32_t imm32)
 
void adc (Register dst, Register src)
 
void adc (Register dst, Operand src)
 
void add (Register dst, Register src)
 
void add (Register dst, Operand src)
 
void add (Operand dst, Register src)
 
void add (Register dst, const Immediate &imm)
 
void add (Operand dst, const Immediate &x)
 
void and_ (Register dst, int32_t imm32)
 
void and_ (Register dst, const Immediate &x)
 
void and_ (Register dst, Register src)
 
void and_ (Register dst, Operand src)
 
void and_ (Operand dst, Register src)
 
void and_ (Operand dst, const Immediate &x)
 
void cmpb (Register reg, Immediate imm8)
 
void cmpb (Operand op, Immediate imm8)
 
void cmpb (Register reg, Operand op)
 
void cmpb (Operand op, Register reg)
 
void cmpb (Register dst, Register src)
 
void cmpb_al (Operand op)
 
void cmpw_ax (Operand op)
 
void cmpw (Operand dst, Immediate src)
 
void cmpw (Register dst, Immediate src)
 
void cmpw (Register dst, Operand src)
 
void cmpw (Register dst, Register src)
 
void cmpw (Operand dst, Register src)
 
void cmp (Register reg, int32_t imm32)
 
void cmp (Register reg, Handle< HeapObject > handle)
 
void cmp (Register reg0, Register reg1)
 
void cmp (Register reg, Operand op)
 
void cmp (Register reg, const Immediate &imm)
 
void cmp (Operand op, Register reg)
 
void cmp (Operand op, const Immediate &imm)
 
void cmp (Operand op, Handle< HeapObject > handle)
 
void dec_b (Register dst)
 
void dec_b (Operand dst)
 
void dec (Register dst)
 
void dec (Operand dst)
 
void cdq ()
 
void idiv (Register src)
 
void idiv (Operand src)
 
void div (Register src)
 
void div (Operand src)
 
void imul (Register src)
 
void imul (Register dst, Register src)
 
void imul (Register dst, Operand src)
 
void imul (Register dst, Register src, int32_t imm32)
 
void imul (Register dst, Operand src, int32_t imm32)
 
void inc (Register dst)
 
void inc (Operand dst)
 
void lea (Register dst, Operand src)
 
void lea (Register dst, Register src, Label *lbl)
 
void mul (Register src)
 
void neg (Register dst)
 
void neg (Operand dst)
 
void not_ (Register dst)
 
void not_ (Operand dst)
 
void or_ (Register dst, int32_t imm32)
 
void or_ (Register dst, Register src)
 
void or_ (Register dst, Operand src)
 
void or_ (Operand dst, Register src)
 
void or_ (Register dst, const Immediate &imm)
 
void or_ (Operand dst, const Immediate &x)
 
void rcl (Register dst, uint8_t imm8)
 
void rcr (Register dst, uint8_t imm8)
 
void rol (Register dst, uint8_t imm8)
 
void rol (Operand dst, uint8_t imm8)
 
void rol_cl (Register dst)
 
void rol_cl (Operand dst)
 
void ror (Register dst, uint8_t imm8)
 
void ror (Operand dst, uint8_t imm8)
 
void ror_cl (Register dst)
 
void ror_cl (Operand dst)
 
void sar (Register dst, uint8_t imm8)
 
void sar (Operand dst, uint8_t imm8)
 
void sar_cl (Register dst)
 
void sar_cl (Operand dst)
 
void sbb (Register dst, Register src)
 
void sbb (Register dst, Operand src)
 
void shl (Register dst, uint8_t imm8)
 
void shl (Operand dst, uint8_t imm8)
 
void shl_cl (Register dst)
 
void shl_cl (Operand dst)
 
void shld (Register dst, Register src, uint8_t shift)
 
void shld_cl (Register dst, Register src)
 
void shr (Register dst, uint8_t imm8)
 
void shr (Operand dst, uint8_t imm8)
 
void shr_cl (Register dst)
 
void shr_cl (Operand dst)
 
void shrd (Register dst, Register src, uint8_t shift)
 
void shrd_cl (Register dst, Register src)
 
void shrd_cl (Operand dst, Register src)
 
void sub (Register dst, const Immediate &imm)
 
void sub (Operand dst, const Immediate &x)
 
void sub (Register dst, Register src)
 
void sub (Register dst, Operand src)
 
void sub (Operand dst, Register src)
 
void sub_sp_32 (uint32_t imm)
 
void test (Register reg, const Immediate &imm)
 
void test (Register reg0, Register reg1)
 
void test (Register reg, Operand op)
 
void test (Operand op, const Immediate &imm)
 
void test (Operand op, Register reg)
 
void test_b (Register reg, Operand op)
 
void test_b (Register reg, Immediate imm8)
 
void test_b (Operand op, Immediate imm8)
 
void test_b (Operand op, Register reg)
 
void test_b (Register dst, Register src)
 
void test_w (Register reg, Operand op)
 
void test_w (Register reg, Immediate imm16)
 
void test_w (Operand op, Immediate imm16)
 
void test_w (Operand op, Register reg)
 
void test_w (Register dst, Register src)
 
void xor_ (Register dst, int32_t imm32)
 
void xor_ (Register dst, Register src)
 
void xor_ (Register dst, Operand src)
 
void xor_ (Operand dst, Register src)
 
void xor_ (Register dst, const Immediate &imm)
 
void xor_ (Operand dst, const Immediate &x)
 
void bswap (Register dst)
 
void bt (Operand dst, Register src)
 
void bts (Register dst, Register src)
 
void bts (Operand dst, Register src)
 
void bsr (Register dst, Register src)
 
void bsr (Register dst, Operand src)
 
void bsf (Register dst, Register src)
 
void bsf (Register dst, Operand src)
 
void hlt ()
 
void int3 ()
 
void nop ()
 
void ret (int imm16)
 
void ud2 ()
 
void bind (Label *L)
 
void call (Label *L)
 
void call (Address entry, RelocInfo::Mode rmode)
 
void call (Register reg)
 
void call (Operand adr)
 
void call (Handle< Code > code, RelocInfo::Mode rmode)
 
void wasm_call (Address address, RelocInfo::Mode rmode)
 
void jmp (Label *L, Label::Distance distance=Label::kFar)
 
void jmp (Address entry, RelocInfo::Mode rmode)
 
void jmp (Register reg)
 
void jmp (Operand adr)
 
void jmp (Handle< Code > code, RelocInfo::Mode rmode)
 
void jmp_rel (int offset)
 
void j (Condition cc, Label *L, Label::Distance distance=Label::kFar)
 
void j (Condition cc, uint8_t *entry, RelocInfo::Mode rmode)
 
void j (Condition cc, Handle< Code > code, RelocInfo::Mode rmode=RelocInfo::CODE_TARGET)
 
void fld (int i)
 
void fstp (int i)
 
void fld1 ()
 
void fldz ()
 
void fldpi ()
 
void fldln2 ()
 
void fld_s (Operand adr)
 
void fld_d (Operand adr)
 
void fstp_s (Operand adr)
 
void fst_s (Operand adr)
 
void fstp_d (Operand adr)
 
void fst_d (Operand adr)
 
void fild_s (Operand adr)
 
void fild_d (Operand adr)
 
void fist_s (Operand adr)
 
void fistp_s (Operand adr)
 
void fistp_d (Operand adr)
 
void fisttp_s (Operand adr)
 
void fisttp_d (Operand adr)
 
void fabs ()
 
void fchs ()
 
void fcos ()
 
void fsin ()
 
void fptan ()
 
void fyl2x ()
 
void f2xm1 ()
 
void fscale ()
 
void fninit ()
 
void fadd (int i)
 
void fadd_i (int i)
 
void fsub (int i)
 
void fsub_i (int i)
 
void fmul (int i)
 
void fmul_i (int i)
 
void fdiv (int i)
 
void fdiv_i (int i)
 
void fisub_s (Operand adr)
 
void faddp (int i=1)
 
void fsubp (int i=1)
 
void fsubrp (int i=1)
 
void fmulp (int i=1)
 
void fdivp (int i=1)
 
void fprem ()
 
void fprem1 ()
 
void fxch (int i=1)
 
void fincstp ()
 
void ffree (int i=0)
 
void ftst ()
 
void fucomp (int i)
 
void fucompp ()
 
void fucomi (int i)
 
void fucomip ()
 
void fcompp ()
 
void fnstsw_ax ()
 
void fwait ()
 
void fnclex ()
 
void frndint ()
 
void sahf ()
 
void setcc (Condition cc, Register reg)
 
void cpuid ()
 
void addss (XMMRegister dst, XMMRegister src)
 
void addss (XMMRegister dst, Operand src)
 
void subss (XMMRegister dst, XMMRegister src)
 
void subss (XMMRegister dst, Operand src)
 
void mulss (XMMRegister dst, XMMRegister src)
 
void mulss (XMMRegister dst, Operand src)
 
void divss (XMMRegister dst, XMMRegister src)
 
void divss (XMMRegister dst, Operand src)
 
void sqrtss (XMMRegister dst, XMMRegister src)
 
void sqrtss (XMMRegister dst, Operand src)
 
void ucomiss (XMMRegister dst, XMMRegister src)
 
void ucomiss (XMMRegister dst, Operand src)
 
void movaps (XMMRegister dst, XMMRegister src)
 
void movaps (XMMRegister dst, Operand src)
 
void movups (XMMRegister dst, XMMRegister src)
 
void movups (XMMRegister dst, Operand src)
 
void movups (Operand dst, XMMRegister src)
 
void shufps (XMMRegister dst, XMMRegister src, uint8_t imm8)
 
void shufpd (XMMRegister dst, XMMRegister src, uint8_t imm8)
 
void movhlps (XMMRegister dst, XMMRegister src)
 
void movlhps (XMMRegister dst, XMMRegister src)
 
void movlps (XMMRegister dst, Operand src)
 
void movlps (Operand dst, XMMRegister src)
 
void movhps (XMMRegister dst, Operand src)
 
void movhps (Operand dst, XMMRegister src)
 
void maxss (XMMRegister dst, XMMRegister src)
 
void maxss (XMMRegister dst, Operand src)
 
void minss (XMMRegister dst, XMMRegister src)
 
void minss (XMMRegister dst, Operand src)
 
void haddps (XMMRegister dst, Operand src)
 
void haddps (XMMRegister dst, XMMRegister src)
 
void sqrtpd (XMMRegister dst, Operand src)
 
void sqrtpd (XMMRegister dst, XMMRegister src)
 
void cmpps (XMMRegister dst, Operand src, uint8_t cmp)
 
void cmpps (XMMRegister dst, XMMRegister src, uint8_t cmp)
 
void cmppd (XMMRegister dst, Operand src, uint8_t cmp)
 
void cmppd (XMMRegister dst, XMMRegister src, uint8_t cmp)
 
void cvttss2si (Register dst, Operand src)
 
void cvttss2si (Register dst, XMMRegister src)
 
void cvttsd2si (Register dst, Operand src)
 
void cvttsd2si (Register dst, XMMRegister src)
 
void cvtsd2si (Register dst, XMMRegister src)
 
void cvtsi2ss (XMMRegister dst, Register src)
 
void cvtsi2ss (XMMRegister dst, Operand src)
 
void cvtsi2sd (XMMRegister dst, Register src)
 
void cvtsi2sd (XMMRegister dst, Operand src)
 
void cvtss2sd (XMMRegister dst, Operand src)
 
void cvtss2sd (XMMRegister dst, XMMRegister src)
 
void cvtdq2pd (XMMRegister dst, XMMRegister src)
 
void cvtpd2ps (XMMRegister dst, XMMRegister src)
 
void cvttps2dq (XMMRegister dst, XMMRegister src)
 
void cvttps2dq (XMMRegister dst, Operand src)
 
void cvttpd2dq (XMMRegister dst, XMMRegister src)
 
void ucomisd (XMMRegister dst, XMMRegister src)
 
void ucomisd (XMMRegister dst, Operand src)
 
void roundss (XMMRegister dst, XMMRegister src, RoundingMode mode)
 
void roundsd (XMMRegister dst, XMMRegister src, RoundingMode mode)
 
void movapd (XMMRegister dst, XMMRegister src)
 
void movapd (XMMRegister dst, Operand src)
 
void movupd (XMMRegister dst, Operand src)
 
void movmskpd (Register dst, XMMRegister src)
 
void movmskps (Register dst, XMMRegister src)
 
void pmovmskb (Register dst, XMMRegister src)
 
void cmpltsd (XMMRegister dst, XMMRegister src)
 
void movdqa (XMMRegister dst, Operand src)
 
void movdqa (Operand dst, XMMRegister src)
 
void movdqa (XMMRegister dst, XMMRegister src)
 
void movdqu (XMMRegister dst, Operand src)
 
void movdqu (Operand dst, XMMRegister src)
 
void movdqu (XMMRegister dst, XMMRegister src)
 
void movdq (bool aligned, XMMRegister dst, Operand src)
 
void movd (XMMRegister dst, Register src)
 
void movd (XMMRegister dst, Operand src)
 
void movd (Register dst, XMMRegister src)
 
void movd (Operand dst, XMMRegister src)
 
void movsd (XMMRegister dst, XMMRegister src)
 
void movsd (XMMRegister dst, Operand src)
 
void movsd (Operand dst, XMMRegister src)
 
void movss (XMMRegister dst, Operand src)
 
void movss (Operand dst, XMMRegister src)
 
void movss (XMMRegister dst, XMMRegister src)
 
void extractps (Operand dst, XMMRegister src, uint8_t imm8)
 
void extractps (Register dst, XMMRegister src, uint8_t imm8)
 
void pcmpgtq (XMMRegister dst, XMMRegister src)
 
void psllw (XMMRegister reg, uint8_t shift)
 
void pslld (XMMRegister reg, uint8_t shift)
 
void psrlw (XMMRegister reg, uint8_t shift)
 
void psrld (XMMRegister reg, uint8_t shift)
 
void psraw (XMMRegister reg, uint8_t shift)
 
void psrad (XMMRegister reg, uint8_t shift)
 
void psllq (XMMRegister reg, uint8_t shift)
 
void psrlq (XMMRegister reg, uint8_t shift)
 
void pshufhw (XMMRegister dst, XMMRegister src, uint8_t shuffle)
 
void pshufhw (XMMRegister dst, Operand src, uint8_t shuffle)
 
void pshuflw (XMMRegister dst, XMMRegister src, uint8_t shuffle)
 
void pshuflw (XMMRegister dst, Operand src, uint8_t shuffle)
 
void pshufd (XMMRegister dst, XMMRegister src, uint8_t shuffle)
 
void pshufd (XMMRegister dst, Operand src, uint8_t shuffle)
 
void pblendw (XMMRegister dst, XMMRegister src, uint8_t mask)
 
void pblendw (XMMRegister dst, Operand src, uint8_t mask)
 
void palignr (XMMRegister dst, XMMRegister src, uint8_t mask)
 
void palignr (XMMRegister dst, Operand src, uint8_t mask)
 
void pextrb (Register dst, XMMRegister src, uint8_t offset)
 
void pextrb (Operand dst, XMMRegister src, uint8_t offset)
 
void movddup (XMMRegister dst, Operand src)
 
void movddup (XMMRegister dst, XMMRegister src)
 
void movshdup (XMMRegister dst, XMMRegister src)
 
void pextrw (Register dst, XMMRegister src, uint8_t offset)
 
void pextrw (Operand dst, XMMRegister src, uint8_t offset)
 
void pextrd (Register dst, XMMRegister src, uint8_t offset)
 
void pextrd (Operand dst, XMMRegister src, uint8_t offset)
 
void insertps (XMMRegister dst, XMMRegister src, uint8_t offset)
 
void insertps (XMMRegister dst, Operand src, uint8_t offset)
 
void pinsrb (XMMRegister dst, Register src, uint8_t offset)
 
void pinsrb (XMMRegister dst, Operand src, uint8_t offset)
 
void pinsrw (XMMRegister dst, Register src, uint8_t offset)
 
void pinsrw (XMMRegister dst, Operand src, uint8_t offset)
 
void pinsrd (XMMRegister dst, Register src, uint8_t offset)
 
void pinsrd (XMMRegister dst, Operand src, uint8_t offset)
 
void roundps (XMMRegister dst, XMMRegister src, RoundingMode mode)
 
void roundpd (XMMRegister dst, XMMRegister src, RoundingMode mode)
 
void vaddss (XMMRegister dst, XMMRegister src1, XMMRegister src2)
 
void vaddss (XMMRegister dst, XMMRegister src1, Operand src2)
 
void vsubss (XMMRegister dst, XMMRegister src1, XMMRegister src2)
 
void vsubss (XMMRegister dst, XMMRegister src1, Operand src2)
 
void vmulss (XMMRegister dst, XMMRegister src1, XMMRegister src2)
 
void vmulss (XMMRegister dst, XMMRegister src1, Operand src2)
 
void vdivss (XMMRegister dst, XMMRegister src1, XMMRegister src2)
 
void vdivss (XMMRegister dst, XMMRegister src1, Operand src2)
 
void vmaxss (XMMRegister dst, XMMRegister src1, XMMRegister src2)
 
void vmaxss (XMMRegister dst, XMMRegister src1, Operand src2)
 
void vminss (XMMRegister dst, XMMRegister src1, XMMRegister src2)
 
void vminss (XMMRegister dst, XMMRegister src1, Operand src2)
 
void vsqrtss (XMMRegister dst, XMMRegister src1, XMMRegister src2)
 
void vsqrtss (XMMRegister dst, XMMRegister src1, Operand src2)
 
void vss (uint8_t op, XMMRegister dst, XMMRegister src1, Operand src2)
 
void vhaddps (XMMRegister dst, XMMRegister src1, XMMRegister src2)
 
void vhaddps (XMMRegister dst, XMMRegister src1, Operand src2)
 
void vsqrtpd (XMMRegister dst, XMMRegister src)
 
void vsqrtpd (XMMRegister dst, Operand src)
 
void vmovss (Operand dst, XMMRegister src)
 
void vmovss (XMMRegister dst, XMMRegister src1, XMMRegister src2)
 
void vmovss (XMMRegister dst, Operand src)
 
void vmovsd (Operand dst, XMMRegister src)
 
void vmovsd (XMMRegister dst, XMMRegister src1, XMMRegister src2)
 
void vmovsd (XMMRegister dst, Operand src)
 
void vextractps (Operand dst, XMMRegister src, uint8_t imm8)
 
void vpcmpgtq (XMMRegister dst, XMMRegister src1, XMMRegister src2)
 
void vmovaps (XMMRegister dst, XMMRegister src)
 
void vmovaps (XMMRegister dst, Operand src)
 
void vmovapd (XMMRegister dst, XMMRegister src)
 
void vmovapd (XMMRegister dst, Operand src)
 
void vmovups (Operand dst, XMMRegister src)
 
void vmovups (XMMRegister dst, XMMRegister src)
 
void vmovups (XMMRegister dst, Operand src)
 
void vmovupd (XMMRegister dst, Operand src)
 
void vshufps (XMMRegister dst, XMMRegister src1, XMMRegister src2, uint8_t imm8)
 
void vshufps (XMMRegister dst, XMMRegister src1, Operand src2, uint8_t imm8)
 
void vshufpd (XMMRegister dst, XMMRegister src1, XMMRegister src2, uint8_t imm8)
 
void vshufpd (XMMRegister dst, XMMRegister src1, Operand src2, uint8_t imm8)
 
void vmovhlps (XMMRegister dst, XMMRegister src1, XMMRegister src2)
 
void vmovlhps (XMMRegister dst, XMMRegister src1, XMMRegister src2)
 
void vmovlps (XMMRegister dst, XMMRegister src1, Operand src2)
 
void vmovlps (Operand dst, XMMRegister src)
 
void vmovhps (XMMRegister dst, XMMRegister src1, Operand src2)
 
void vmovhps (Operand dst, XMMRegister src)
 
void vpsllw (XMMRegister dst, XMMRegister src, uint8_t imm8)
 
void vpslld (XMMRegister dst, XMMRegister src, uint8_t imm8)
 
void vpsllq (XMMRegister dst, XMMRegister src, uint8_t imm8)
 
void vpsrlw (XMMRegister dst, XMMRegister src, uint8_t imm8)
 
void vpsrld (XMMRegister dst, XMMRegister src, uint8_t imm8)
 
void vpsraw (XMMRegister dst, XMMRegister src, uint8_t imm8)
 
void vpsrad (XMMRegister dst, XMMRegister src, uint8_t imm8)
 
void vpsrlq (XMMRegister dst, XMMRegister src, uint8_t imm8)
 
void vpshufhw (XMMRegister dst, XMMRegister src, uint8_t shuffle)
 
void vpshufhw (XMMRegister dst, Operand src, uint8_t shuffle)
 
void vpshuflw (XMMRegister dst, XMMRegister src, uint8_t shuffle)
 
void vpshuflw (XMMRegister dst, Operand src, uint8_t shuffle)
 
void vpshufd (XMMRegister dst, XMMRegister src, uint8_t shuffle)
 
void vpshufd (XMMRegister dst, Operand src, uint8_t shuffle)
 
void vblendvps (XMMRegister dst, XMMRegister src1, XMMRegister src2, XMMRegister mask)
 
void vblendvpd (XMMRegister dst, XMMRegister src1, XMMRegister src2, XMMRegister mask)
 
void vpblendvb (XMMRegister dst, XMMRegister src1, XMMRegister src2, XMMRegister mask)
 
void vpblendw (XMMRegister dst, XMMRegister src1, XMMRegister src2, uint8_t mask)
 
void vpblendw (XMMRegister dst, XMMRegister src1, Operand src2, uint8_t mask)
 
void vpalignr (XMMRegister dst, XMMRegister src1, XMMRegister src2, uint8_t mask)
 
void vpalignr (XMMRegister dst, XMMRegister src1, Operand src2, uint8_t mask)
 
void vpextrb (Register dst, XMMRegister src, uint8_t offset)
 
void vpextrb (Operand dst, XMMRegister src, uint8_t offset)
 
void vpextrw (Register dst, XMMRegister src, uint8_t offset)
 
void vpextrw (Operand dst, XMMRegister src, uint8_t offset)
 
void vpextrd (Register dst, XMMRegister src, uint8_t offset)
 
void vpextrd (Operand dst, XMMRegister src, uint8_t offset)
 
void vinsertps (XMMRegister dst, XMMRegister src1, XMMRegister src2, uint8_t offset)
 
void vinsertps (XMMRegister dst, XMMRegister src1, Operand src2, uint8_t offset)
 
void vpinsrb (XMMRegister dst, XMMRegister src1, Register src2, uint8_t offset)
 
void vpinsrb (XMMRegister dst, XMMRegister src1, Operand src2, uint8_t offset)
 
void vpinsrw (XMMRegister dst, XMMRegister src1, Register src2, uint8_t offset)
 
void vpinsrw (XMMRegister dst, XMMRegister src1, Operand src2, uint8_t offset)
 
void vpinsrd (XMMRegister dst, XMMRegister src1, Register src2, uint8_t offset)
 
void vpinsrd (XMMRegister dst, XMMRegister src1, Operand src2, uint8_t offset)
 
void vroundsd (XMMRegister dst, XMMRegister src1, XMMRegister src2, RoundingMode mode)
 
void vroundss (XMMRegister dst, XMMRegister src1, XMMRegister src2, RoundingMode mode)
 
void vroundps (XMMRegister dst, XMMRegister src, RoundingMode mode)
 
void vroundpd (XMMRegister dst, XMMRegister src, RoundingMode mode)
 
void vcvtdq2pd (XMMRegister dst, XMMRegister src)
 
void vcvtpd2ps (XMMRegister dst, XMMRegister src)
 
void vcvttps2dq (XMMRegister dst, XMMRegister src)
 
void vcvttps2dq (XMMRegister dst, Operand src)
 
void vcvttpd2dq (XMMRegister dst, XMMRegister src)
 
void vcvttsd2si (Register dst, XMMRegister src)
 
void vcvttsd2si (Register dst, Operand src)
 
void vcvtss2sd (XMMRegister dst, XMMRegister src1, XMMRegister src2)
 
void vcvtss2sd (XMMRegister dst, XMMRegister src1, Operand src2)
 
void vcvttss2si (Register dst, XMMRegister src)
 
void vcvttss2si (Register dst, Operand src)
 
void vmovddup (XMMRegister dst, Operand src)
 
void vmovddup (XMMRegister dst, XMMRegister src)
 
void vmovshdup (XMMRegister dst, XMMRegister src)
 
void vbroadcastss (XMMRegister dst, XMMRegister src)
 
void vbroadcastss (XMMRegister dst, Operand src)
 
void vmovdqa (XMMRegister dst, Operand src)
 
void vmovdqa (XMMRegister dst, XMMRegister src)
 
void vmovdqu (XMMRegister dst, Operand src)
 
void vmovdqu (Operand dst, XMMRegister src)
 
void vmovd (XMMRegister dst, Register src)
 
void vmovd (XMMRegister dst, Operand src)
 
void vmovd (Register dst, XMMRegister src)
 
void vmovd (Operand dst, XMMRegister src)
 
void vmovmskpd (Register dst, XMMRegister src)
 
void vmovmskps (Register dst, XMMRegister src)
 
void vpmovmskb (Register dst, XMMRegister src)
 
void vucomisd (XMMRegister dst, XMMRegister src)
 
void vucomisd (XMMRegister dst, Operand src)
 
void vucomiss (XMMRegister dst, XMMRegister src)
 
void vucomiss (XMMRegister dst, Operand src)
 
void andn (Register dst, Register src1, Register src2)
 
void andn (Register dst, Register src1, Operand src2)
 
void bextr (Register dst, Register src1, Register src2)
 
void bextr (Register dst, Operand src1, Register src2)
 
void blsi (Register dst, Register src)
 
void blsi (Register dst, Operand src)
 
void blsmsk (Register dst, Register src)
 
void blsmsk (Register dst, Operand src)
 
void blsr (Register dst, Register src)
 
void blsr (Register dst, Operand src)
 
void tzcnt (Register dst, Register src)
 
void tzcnt (Register dst, Operand src)
 
void lzcnt (Register dst, Register src)
 
void lzcnt (Register dst, Operand src)
 
void popcnt (Register dst, Register src)
 
void popcnt (Register dst, Operand src)
 
void bzhi (Register dst, Register src1, Register src2)
 
void bzhi (Register dst, Operand src1, Register src2)
 
void mulx (Register dst1, Register dst2, Register src)
 
void mulx (Register dst1, Register dst2, Operand src)
 
void pdep (Register dst, Register src1, Register src2)
 
void pdep (Register dst, Register src1, Operand src2)
 
void pext (Register dst, Register src1, Register src2)
 
void pext (Register dst, Register src1, Operand src2)
 
void sarx (Register dst, Register src1, Register src2)
 
void sarx (Register dst, Operand src1, Register src2)
 
void shlx (Register dst, Register src1, Register src2)
 
void shlx (Register dst, Operand src1, Register src2)
 
void shrx (Register dst, Register src1, Register src2)
 
void shrx (Register dst, Operand src1, Register src2)
 
void rorx (Register dst, Register src, uint8_t imm8)
 
void rorx (Register dst, Operand src, uint8_t imm8)
 
void ps (uint8_t op, XMMRegister dst, Operand src)
 
void pd (uint8_t op, XMMRegister dst, Operand src)
 
void vps (uint8_t op, XMMRegister dst, XMMRegister src1, Operand src2)
 
void vpd (uint8_t op, XMMRegister dst, XMMRegister src1, Operand src2)
 
void vcmpps (XMMRegister dst, XMMRegister src1, Operand src2, uint8_t cmp)
 
void vcmppd (XMMRegister dst, XMMRegister src1, Operand src2, uint8_t cmp)
 
void prefetch (Operand src, int level)
 
int SizeOfCodeGeneratedSince (Label *label)
 
void RecordDeoptReason (DeoptimizeReason reason, uint32_t node_id, SourcePosition position, int id)
 
void db (uint8_t data)
 
void dd (uint32_t data)
 
void dq (uint64_t data)
 
void dp (uintptr_t data)
 
void dd (Label *label)
 
bool buffer_overflow () const
 
int available_space () const
 
int relocation_writer_size ()
 
uint8_t byte_at (int pos)
 
void set_byte_at (int pos, uint8_t value)
 
 Assembler (const AssemblerOptions &, std::unique_ptr< AssemblerBuffer >={})
 
 Assembler (const MaybeAssemblerZone &, const AssemblerOptions &options, std::unique_ptr< AssemblerBuffer > buffer={})
 
virtual ~Assembler ()
 
void GetCode (LocalIsolate *isolate, CodeDesc *desc, SafepointTableBuilderBase *safepoint_table_builder, int handler_table_offset)
 
void GetCode (Isolate *isolate, CodeDesc *desc)
 
void GetCode (LocalIsolate *isolate, CodeDesc *desc)
 
void MaybeEmitOutOfLineConstantPool ()
 
int pc_offset_for_safepoint ()
 
void bind (Label *L)
 
bool is_near_c (Label *L)
 
bool is_near (Label *L, OffsetSize bits)
 
bool is_near_a (Label *L)
 
int BranchOffset (Instr instr)
 
int32_t branch_offset_helper (Label *L, OffsetSize bits)
 
int32_t branch_offset (Label *L)
 
int32_t branch_offset21 (Label *L)
 
int32_t branch_offset26 (Label *L)
 
int32_t shifted_branch_offset (Label *L)
 
int32_t shifted_branch_offset21 (Label *L)
 
int32_t shifted_branch_offset26 (Label *L)
 
uint64_t jump_address (Label *L)
 
uint64_t jump_offset (Label *L)
 
uint64_t branch_long_offset (Label *L)
 
void label_at_put (Label *L, int at_offset)
 
Handle< Codecode_target_object_handle_at (Address pc, Address constant_pool)
 
Handle< HeapObjectcompressed_embedded_object_handle_at (Address pc, Address constant_pool)
 
Handle< HeapObjectembedded_object_handle_at (Address pc, Address constant_pool)
 
RegListGetScratchRegisterList ()
 
DoubleRegListGetScratchFPRegisterList ()
 
void Align (int m)
 
void DataAlign (int m)
 
void CodeTargetAlign ()
 
void LoopHeaderAlign ()
 
void nop (unsigned int type=0)
 
void b (int32_t offset)
 
void b (Label *L)
 
void bl (int32_t offset)
 
void bl (Label *L)
 
void beq (Register rj, Register rd, int32_t offset)
 
void beq (Register rj, Register rd, Label *L)
 
void bne (Register rj, Register rd, int32_t offset)
 
void bne (Register rj, Register rd, Label *L)
 
void blt (Register rj, Register rd, int32_t offset)
 
void blt (Register rj, Register rd, Label *L)
 
void bge (Register rj, Register rd, int32_t offset)
 
void bge (Register rj, Register rd, Label *L)
 
void bltu (Register rj, Register rd, int32_t offset)
 
void bltu (Register rj, Register rd, Label *L)
 
void bgeu (Register rj, Register rd, int32_t offset)
 
void bgeu (Register rj, Register rd, Label *L)
 
void beqz (Register rj, int32_t offset)
 
void beqz (Register rj, Label *L)
 
void bnez (Register rj, int32_t offset)
 
void bnez (Register rj, Label *L)
 
void jirl (Register rd, Register rj, int32_t offset)
 
void bceqz (CFRegister cj, int32_t si21)
 
void bceqz (CFRegister cj, Label *L)
 
void bcnez (CFRegister cj, int32_t si21)
 
void bcnez (CFRegister cj, Label *L)
 
void add_w (Register rd, Register rj, Register rk)
 
void add_d (Register rd, Register rj, Register rk)
 
void sub_w (Register rd, Register rj, Register rk)
 
void sub_d (Register rd, Register rj, Register rk)
 
void addi_w (Register rd, Register rj, int32_t si12)
 
void addi_d (Register rd, Register rj, int32_t si12)
 
void addu16i_d (Register rd, Register rj, int32_t si16)
 
void alsl_w (Register rd, Register rj, Register rk, int32_t sa2)
 
void alsl_wu (Register rd, Register rj, Register rk, int32_t sa2)
 
void alsl_d (Register rd, Register rj, Register rk, int32_t sa2)
 
void lu12i_w (Register rd, int32_t si20)
 
void lu32i_d (Register rd, int32_t si20)
 
void lu52i_d (Register rd, Register rj, int32_t si12)
 
void slt (Register rd, Register rj, Register rk)
 
void sltu (Register rd, Register rj, Register rk)
 
void slti (Register rd, Register rj, int32_t si12)
 
void sltui (Register rd, Register rj, int32_t si12)
 
void pcaddi (Register rd, int32_t si20)
 
void pcaddu12i (Register rd, int32_t si20)
 
void pcaddu18i (Register rd, int32_t si20)
 
void pcalau12i (Register rd, int32_t si20)
 
void and_ (Register rd, Register rj, Register rk)
 
void or_ (Register rd, Register rj, Register rk)
 
void xor_ (Register rd, Register rj, Register rk)
 
void nor (Register rd, Register rj, Register rk)
 
void andn (Register rd, Register rj, Register rk)
 
void orn (Register rd, Register rj, Register rk)
 
void andi (Register rd, Register rj, int32_t ui12)
 
void ori (Register rd, Register rj, int32_t ui12)
 
void xori (Register rd, Register rj, int32_t ui12)
 
void mul_w (Register rd, Register rj, Register rk)
 
void mulh_w (Register rd, Register rj, Register rk)
 
void mulh_wu (Register rd, Register rj, Register rk)
 
void mul_d (Register rd, Register rj, Register rk)
 
void mulh_d (Register rd, Register rj, Register rk)
 
void mulh_du (Register rd, Register rj, Register rk)
 
void mulw_d_w (Register rd, Register rj, Register rk)
 
void mulw_d_wu (Register rd, Register rj, Register rk)
 
void div_w (Register rd, Register rj, Register rk)
 
void mod_w (Register rd, Register rj, Register rk)
 
void div_wu (Register rd, Register rj, Register rk)
 
void mod_wu (Register rd, Register rj, Register rk)
 
void div_d (Register rd, Register rj, Register rk)
 
void mod_d (Register rd, Register rj, Register rk)
 
void div_du (Register rd, Register rj, Register rk)
 
void mod_du (Register rd, Register rj, Register rk)
 
void sll_w (Register rd, Register rj, Register rk)
 
void srl_w (Register rd, Register rj, Register rk)
 
void sra_w (Register rd, Register rj, Register rk)
 
void rotr_w (Register rd, Register rj, Register rk)
 
void slli_w (Register rd, Register rj, int32_t ui5)
 
void srli_w (Register rd, Register rj, int32_t ui5)
 
void srai_w (Register rd, Register rj, int32_t ui5)
 
void rotri_w (Register rd, Register rj, int32_t ui5)
 
void sll_d (Register rd, Register rj, Register rk)
 
void srl_d (Register rd, Register rj, Register rk)
 
void sra_d (Register rd, Register rj, Register rk)
 
void rotr_d (Register rd, Register rj, Register rk)
 
void slli_d (Register rd, Register rj, int32_t ui6)
 
void srli_d (Register rd, Register rj, int32_t ui6)
 
void srai_d (Register rd, Register rj, int32_t ui6)
 
void rotri_d (Register rd, Register rj, int32_t ui6)
 
void ext_w_b (Register rd, Register rj)
 
void ext_w_h (Register rd, Register rj)
 
void clo_w (Register rd, Register rj)
 
void clz_w (Register rd, Register rj)
 
void cto_w (Register rd, Register rj)
 
void ctz_w (Register rd, Register rj)
 
void clo_d (Register rd, Register rj)
 
void clz_d (Register rd, Register rj)
 
void cto_d (Register rd, Register rj)
 
void ctz_d (Register rd, Register rj)
 
void bytepick_w (Register rd, Register rj, Register rk, int32_t sa2)
 
void bytepick_d (Register rd, Register rj, Register rk, int32_t sa3)
 
void revb_2h (Register rd, Register rj)
 
void revb_4h (Register rd, Register rj)
 
void revb_2w (Register rd, Register rj)
 
void revb_d (Register rd, Register rj)
 
void revh_2w (Register rd, Register rj)
 
void revh_d (Register rd, Register rj)
 
void bitrev_4b (Register rd, Register rj)
 
void bitrev_8b (Register rd, Register rj)
 
void bitrev_w (Register rd, Register rj)
 
void bitrev_d (Register rd, Register rj)
 
void bstrins_w (Register rd, Register rj, int32_t msbw, int32_t lsbw)
 
void bstrins_d (Register rd, Register rj, int32_t msbd, int32_t lsbd)
 
void bstrpick_w (Register rd, Register rj, int32_t msbw, int32_t lsbw)
 
void bstrpick_d (Register rd, Register rj, int32_t msbd, int32_t lsbd)
 
void maskeqz (Register rd, Register rj, Register rk)
 
void masknez (Register rd, Register rj, Register rk)
 
void ld_b (Register rd, Register rj, int32_t si12)
 
void ld_h (Register rd, Register rj, int32_t si12)
 
void ld_w (Register rd, Register rj, int32_t si12)
 
void ld_d (Register rd, Register rj, int32_t si12)
 
void ld_bu (Register rd, Register rj, int32_t si12)
 
void ld_hu (Register rd, Register rj, int32_t si12)
 
void ld_wu (Register rd, Register rj, int32_t si12)
 
void st_b (Register rd, Register rj, int32_t si12)
 
void st_h (Register rd, Register rj, int32_t si12)
 
void st_w (Register rd, Register rj, int32_t si12)
 
void st_d (Register rd, Register rj, int32_t si12)
 
void ldx_b (Register rd, Register rj, Register rk)
 
void ldx_h (Register rd, Register rj, Register rk)
 
void ldx_w (Register rd, Register rj, Register rk)
 
void ldx_d (Register rd, Register rj, Register rk)
 
void ldx_bu (Register rd, Register rj, Register rk)
 
void ldx_hu (Register rd, Register rj, Register rk)
 
void ldx_wu (Register rd, Register rj, Register rk)
 
void stx_b (Register rd, Register rj, Register rk)
 
void stx_h (Register rd, Register rj, Register rk)
 
void stx_w (Register rd, Register rj, Register rk)
 
void stx_d (Register rd, Register rj, Register rk)
 
void ldptr_w (Register rd, Register rj, int32_t si14)
 
void ldptr_d (Register rd, Register rj, int32_t si14)
 
void stptr_w (Register rd, Register rj, int32_t si14)
 
void stptr_d (Register rd, Register rj, int32_t si14)
 
void amswap_w (Register rd, Register rk, Register rj)
 
void amswap_d (Register rd, Register rk, Register rj)
 
void amadd_w (Register rd, Register rk, Register rj)
 
void amadd_d (Register rd, Register rk, Register rj)
 
void amand_w (Register rd, Register rk, Register rj)
 
void amand_d (Register rd, Register rk, Register rj)
 
void amor_w (Register rd, Register rk, Register rj)
 
void amor_d (Register rd, Register rk, Register rj)
 
void amxor_w (Register rd, Register rk, Register rj)
 
void amxor_d (Register rd, Register rk, Register rj)
 
void ammax_w (Register rd, Register rk, Register rj)
 
void ammax_d (Register rd, Register rk, Register rj)
 
void ammin_w (Register rd, Register rk, Register rj)
 
void ammin_d (Register rd, Register rk, Register rj)
 
void ammax_wu (Register rd, Register rk, Register rj)
 
void ammax_du (Register rd, Register rk, Register rj)
 
void ammin_wu (Register rd, Register rk, Register rj)
 
void ammin_du (Register rd, Register rk, Register rj)
 
void amswap_db_w (Register rd, Register rk, Register rj)
 
void amswap_db_d (Register rd, Register rk, Register rj)
 
void amadd_db_w (Register rd, Register rk, Register rj)
 
void amadd_db_d (Register rd, Register rk, Register rj)
 
void amand_db_w (Register rd, Register rk, Register rj)
 
void amand_db_d (Register rd, Register rk, Register rj)
 
void amor_db_w (Register rd, Register rk, Register rj)
 
void amor_db_d (Register rd, Register rk, Register rj)
 
void amxor_db_w (Register rd, Register rk, Register rj)
 
void amxor_db_d (Register rd, Register rk, Register rj)
 
void ammax_db_w (Register rd, Register rk, Register rj)
 
void ammax_db_d (Register rd, Register rk, Register rj)
 
void ammin_db_w (Register rd, Register rk, Register rj)
 
void ammin_db_d (Register rd, Register rk, Register rj)
 
void ammax_db_wu (Register rd, Register rk, Register rj)
 
void ammax_db_du (Register rd, Register rk, Register rj)
 
void ammin_db_wu (Register rd, Register rk, Register rj)
 
void ammin_db_du (Register rd, Register rk, Register rj)
 
void ll_w (Register rd, Register rj, int32_t si14)
 
void ll_d (Register rd, Register rj, int32_t si14)
 
void sc_w (Register rd, Register rj, int32_t si14)
 
void sc_d (Register rd, Register rj, int32_t si14)
 
void dbar (int32_t hint)
 
void ibar (int32_t hint)
 
void break_ (uint32_t code, bool break_as_stop=false)
 
void stop (uint32_t code=kMaxStopCode)
 
void fadd_s (FPURegister fd, FPURegister fj, FPURegister fk)
 
void fadd_d (FPURegister fd, FPURegister fj, FPURegister fk)
 
void fsub_s (FPURegister fd, FPURegister fj, FPURegister fk)
 
void fsub_d (FPURegister fd, FPURegister fj, FPURegister fk)
 
void fmul_s (FPURegister fd, FPURegister fj, FPURegister fk)
 
void fmul_d (FPURegister fd, FPURegister fj, FPURegister fk)
 
void fdiv_s (FPURegister fd, FPURegister fj, FPURegister fk)
 
void fdiv_d (FPURegister fd, FPURegister fj, FPURegister fk)
 
void fmadd_s (FPURegister fd, FPURegister fj, FPURegister fk, FPURegister fa)
 
void fmadd_d (FPURegister fd, FPURegister fj, FPURegister fk, FPURegister fa)
 
void fmsub_s (FPURegister fd, FPURegister fj, FPURegister fk, FPURegister fa)
 
void fmsub_d (FPURegister fd, FPURegister fj, FPURegister fk, FPURegister fa)
 
void fnmadd_s (FPURegister fd, FPURegister fj, FPURegister fk, FPURegister fa)
 
void fnmadd_d (FPURegister fd, FPURegister fj, FPURegister fk, FPURegister fa)
 
void fnmsub_s (FPURegister fd, FPURegister fj, FPURegister fk, FPURegister fa)
 
void fnmsub_d (FPURegister fd, FPURegister fj, FPURegister fk, FPURegister fa)
 
void fmax_s (FPURegister fd, FPURegister fj, FPURegister fk)
 
void fmax_d (FPURegister fd, FPURegister fj, FPURegister fk)
 
void fmin_s (FPURegister fd, FPURegister fj, FPURegister fk)
 
void fmin_d (FPURegister fd, FPURegister fj, FPURegister fk)
 
void fmaxa_s (FPURegister fd, FPURegister fj, FPURegister fk)
 
void fmaxa_d (FPURegister fd, FPURegister fj, FPURegister fk)
 
void fmina_s (FPURegister fd, FPURegister fj, FPURegister fk)
 
void fmina_d (FPURegister fd, FPURegister fj, FPURegister fk)
 
void fabs_s (FPURegister fd, FPURegister fj)
 
void fabs_d (FPURegister fd, FPURegister fj)
 
void fneg_s (FPURegister fd, FPURegister fj)
 
void fneg_d (FPURegister fd, FPURegister fj)
 
void fsqrt_s (FPURegister fd, FPURegister fj)
 
void fsqrt_d (FPURegister fd, FPURegister fj)
 
void frecip_s (FPURegister fd, FPURegister fj)
 
void frecip_d (FPURegister fd, FPURegister fj)
 
void frsqrt_s (FPURegister fd, FPURegister fj)
 
void frsqrt_d (FPURegister fd, FPURegister fj)
 
void fscaleb_s (FPURegister fd, FPURegister fj, FPURegister fk)
 
void fscaleb_d (FPURegister fd, FPURegister fj, FPURegister fk)
 
void flogb_s (FPURegister fd, FPURegister fj)
 
void flogb_d (FPURegister fd, FPURegister fj)
 
void fcopysign_s (FPURegister fd, FPURegister fj, FPURegister fk)
 
void fcopysign_d (FPURegister fd, FPURegister fj, FPURegister fk)
 
void fclass_s (FPURegister fd, FPURegister fj)
 
void fclass_d (FPURegister fd, FPURegister fj)
 
void fcmp_cond_s (FPUCondition cc, FPURegister fj, FPURegister fk, CFRegister cd)
 
void fcmp_cond_d (FPUCondition cc, FPURegister fj, FPURegister fk, CFRegister cd)
 
void fcvt_s_d (FPURegister fd, FPURegister fj)
 
void fcvt_d_s (FPURegister fd, FPURegister fj)
 
void ffint_s_w (FPURegister fd, FPURegister fj)
 
void ffint_s_l (FPURegister fd, FPURegister fj)
 
void ffint_d_w (FPURegister fd, FPURegister fj)
 
void ffint_d_l (FPURegister fd, FPURegister fj)
 
void ftint_w_s (FPURegister fd, FPURegister fj)
 
void ftint_w_d (FPURegister fd, FPURegister fj)
 
void ftint_l_s (FPURegister fd, FPURegister fj)
 
void ftint_l_d (FPURegister fd, FPURegister fj)
 
void ftintrm_w_s (FPURegister fd, FPURegister fj)
 
void ftintrm_w_d (FPURegister fd, FPURegister fj)
 
void ftintrm_l_s (FPURegister fd, FPURegister fj)
 
void ftintrm_l_d (FPURegister fd, FPURegister fj)
 
void ftintrp_w_s (FPURegister fd, FPURegister fj)
 
void ftintrp_w_d (FPURegister fd, FPURegister fj)
 
void ftintrp_l_s (FPURegister fd, FPURegister fj)
 
void ftintrp_l_d (FPURegister fd, FPURegister fj)
 
void ftintrz_w_s (FPURegister fd, FPURegister fj)
 
void ftintrz_w_d (FPURegister fd, FPURegister fj)
 
void ftintrz_l_s (FPURegister fd, FPURegister fj)
 
void ftintrz_l_d (FPURegister fd, FPURegister fj)
 
void ftintrne_w_s (FPURegister fd, FPURegister fj)
 
void ftintrne_w_d (FPURegister fd, FPURegister fj)
 
void ftintrne_l_s (FPURegister fd, FPURegister fj)
 
void ftintrne_l_d (FPURegister fd, FPURegister fj)
 
void frint_s (FPURegister fd, FPURegister fj)
 
void frint_d (FPURegister fd, FPURegister fj)
 
void fmov_s (FPURegister fd, FPURegister fj)
 
void fmov_d (FPURegister fd, FPURegister fj)
 
void fsel (CFRegister ca, FPURegister fd, FPURegister fj, FPURegister fk)
 
void movgr2fr_w (FPURegister fd, Register rj)
 
void movgr2fr_d (FPURegister fd, Register rj)
 
void movgr2frh_w (FPURegister fd, Register rj)
 
void movfr2gr_s (Register rd, FPURegister fj)
 
void movfr2gr_d (Register rd, FPURegister fj)
 
void movfrh2gr_s (Register rd, FPURegister fj)
 
void movgr2fcsr (Register rj, FPUControlRegister fcsr=FCSR0)
 
void movfcsr2gr (Register rd, FPUControlRegister fcsr=FCSR0)
 
void movfr2cf (CFRegister cd, FPURegister fj)
 
void movcf2fr (FPURegister fd, CFRegister cj)
 
void movgr2cf (CFRegister cd, Register rj)
 
void movcf2gr (Register rd, CFRegister cj)
 
void fld_s (FPURegister fd, Register rj, int32_t si12)
 
void fld_d (FPURegister fd, Register rj, int32_t si12)
 
void fst_s (FPURegister fd, Register rj, int32_t si12)
 
void fst_d (FPURegister fd, Register rj, int32_t si12)
 
void fldx_s (FPURegister fd, Register rj, Register rk)
 
void fldx_d (FPURegister fd, Register rj, Register rk)
 
void fstx_s (FPURegister fd, Register rj, Register rk)
 
void fstx_d (FPURegister fd, Register rj, Register rk)
 
int SizeOfCodeGeneratedSince (Label *label)
 
int InstructionsGeneratedSince (Label *label)
 
void RecordDeoptReason (DeoptimizeReason reason, uint32_t node_id, SourcePosition position, int id)
 
void db (uint8_t data)
 
void dd (uint32_t data)
 
void dq (uint64_t data)
 
void dp (uintptr_t data)
 
void dd (Label *label)
 
void BlockTrampolinePoolFor (int instructions)
 
bool overflow () const
 
intptr_t available_space () const
 
Instr instr_at (int pos)
 
void instr_at_put (int pos, Instr instr, WritableJitAllocation *jit_allocation=nullptr)
 
void CheckTrampolinePool ()
 
Handle< Coderelative_code_target_object_handle_at (Address pc_) const
 
int UnboundLabelsCount ()
 
 Assembler (const AssemblerOptions &, std::unique_ptr< AssemblerBuffer >={})
 
 Assembler (const MaybeAssemblerZone &, const AssemblerOptions &options, std::unique_ptr< AssemblerBuffer > buffer={})
 
virtual ~Assembler ()
 
void GetCode (LocalIsolate *isolate, CodeDesc *desc, SafepointTableBuilderBase *safepoint_table_builder, int handler_table_offset)
 
void GetCode (Isolate *isolate, CodeDesc *desc)
 
void GetCode (LocalIsolate *isolate, CodeDesc *desc)
 
void MaybeEmitOutOfLineConstantPool ()
 
int pc_offset_for_safepoint ()
 
void bind (Label *L)
 
bool is_near (Label *L)
 
bool is_near (Label *L, OffsetSize bits)
 
bool is_near_branch (Label *L)
 
bool is_near_pre_r6 (Label *L)
 
bool is_near_r6 (Label *L)
 
int BranchOffset (Instr instr)
 
int32_t branch_offset_helper (Label *L, OffsetSize bits)
 
int32_t branch_offset (Label *L)
 
int32_t branch_offset21 (Label *L)
 
int32_t branch_offset26 (Label *L)
 
int32_t shifted_branch_offset (Label *L)
 
int32_t shifted_branch_offset21 (Label *L)
 
int32_t shifted_branch_offset26 (Label *L)
 
uint64_t jump_address (Label *L)
 
uint64_t jump_offset (Label *L)
 
uint64_t branch_long_offset (Label *L)
 
void label_at_put (Label *L, int at_offset)
 
RegListGetScratchRegisterList ()
 
void Align (int m)
 
void DataAlign (int m)
 
void CodeTargetAlign ()
 
void LoopHeaderAlign ()
 
void nop (unsigned int type=0)
 
void b (int16_t offset)
 
void b (Label *L)
 
void bal (int16_t offset)
 
void bal (Label *L)
 
void bc (int32_t offset)
 
void bc (Label *L)
 
void balc (int32_t offset)
 
void balc (Label *L)
 
void beq (Register rs, Register rt, int16_t offset)
 
void beq (Register rs, Register rt, Label *L)
 
void bgez (Register rs, int16_t offset)
 
void bgezc (Register rt, int16_t offset)
 
void bgezc (Register rt, Label *L)
 
void bgeuc (Register rs, Register rt, int16_t offset)
 
void bgeuc (Register rs, Register rt, Label *L)
 
void bgec (Register rs, Register rt, int16_t offset)
 
void bgec (Register rs, Register rt, Label *L)
 
void bgezal (Register rs, int16_t offset)
 
void bgezalc (Register rt, int16_t offset)
 
void bgezalc (Register rt, Label *L)
 
void bgezall (Register rs, int16_t offset)
 
void bgezall (Register rs, Label *L)
 
void bgtz (Register rs, int16_t offset)
 
void bgtzc (Register rt, int16_t offset)
 
void bgtzc (Register rt, Label *L)
 
void blez (Register rs, int16_t offset)
 
void blezc (Register rt, int16_t offset)
 
void blezc (Register rt, Label *L)
 
void bltz (Register rs, int16_t offset)
 
void bltzc (Register rt, int16_t offset)
 
void bltzc (Register rt, Label *L)
 
void bltuc (Register rs, Register rt, int16_t offset)
 
void bltuc (Register rs, Register rt, Label *L)
 
void bltc (Register rs, Register rt, int16_t offset)
 
void bltc (Register rs, Register rt, Label *L)
 
void bltzal (Register rs, int16_t offset)
 
void nal ()
 
void blezalc (Register rt, int16_t offset)
 
void blezalc (Register rt, Label *L)
 
void bltzalc (Register rt, int16_t offset)
 
void bltzalc (Register rt, Label *L)
 
void bgtzalc (Register rt, int16_t offset)
 
void bgtzalc (Register rt, Label *L)
 
void beqzalc (Register rt, int16_t offset)
 
void beqzalc (Register rt, Label *L)
 
void beqc (Register rs, Register rt, int16_t offset)
 
void beqc (Register rs, Register rt, Label *L)
 
void beqzc (Register rs, int32_t offset)
 
void beqzc (Register rs, Label *L)
 
void bnezalc (Register rt, int16_t offset)
 
void bnezalc (Register rt, Label *L)
 
void bnec (Register rs, Register rt, int16_t offset)
 
void bnec (Register rs, Register rt, Label *L)
 
void bnezc (Register rt, int32_t offset)
 
void bnezc (Register rt, Label *L)
 
void bne (Register rs, Register rt, int16_t offset)
 
void bne (Register rs, Register rt, Label *L)
 
void bovc (Register rs, Register rt, int16_t offset)
 
void bovc (Register rs, Register rt, Label *L)
 
void bnvc (Register rs, Register rt, int16_t offset)
 
void bnvc (Register rs, Register rt, Label *L)
 
void jalr (Register rs, Register rd=ra)
 
void jr (Register target)
 
void jic (Register rt, int16_t offset)
 
void jialc (Register rt, int16_t offset)
 
void j (int64_t target)
 
void jal (int64_t target)
 
void j (Label *target)
 
void jal (Label *target)
 
void addu (Register rd, Register rs, Register rt)
 
void subu (Register rd, Register rs, Register rt)
 
void div (Register rs, Register rt)
 
void divu (Register rs, Register rt)
 
void ddiv (Register rs, Register rt)
 
void ddivu (Register rs, Register rt)
 
void div (Register rd, Register rs, Register rt)
 
void divu (Register rd, Register rs, Register rt)
 
void ddiv (Register rd, Register rs, Register rt)
 
void ddivu (Register rd, Register rs, Register rt)
 
void mod (Register rd, Register rs, Register rt)
 
void modu (Register rd, Register rs, Register rt)
 
void dmod (Register rd, Register rs, Register rt)
 
void dmodu (Register rd, Register rs, Register rt)
 
void mul (Register rd, Register rs, Register rt)
 
void muh (Register rd, Register rs, Register rt)
 
void mulu (Register rd, Register rs, Register rt)
 
void muhu (Register rd, Register rs, Register rt)
 
void mult (Register rs, Register rt)
 
void multu (Register rs, Register rt)
 
void dmul (Register rd, Register rs, Register rt)
 
void dmuh (Register rd, Register rs, Register rt)
 
void dmulu (Register rd, Register rs, Register rt)
 
void dmuhu (Register rd, Register rs, Register rt)
 
void daddu (Register rd, Register rs, Register rt)
 
void dsubu (Register rd, Register rs, Register rt)
 
void dmult (Register rs, Register rt)
 
void dmultu (Register rs, Register rt)
 
void addiu (Register rd, Register rs, int32_t j)
 
void daddiu (Register rd, Register rs, int32_t j)
 
void and_ (Register rd, Register rs, Register rt)
 
void or_ (Register rd, Register rs, Register rt)
 
void xor_ (Register rd, Register rs, Register rt)
 
void nor (Register rd, Register rs, Register rt)
 
void andi (Register rd, Register rs, int32_t j)
 
void ori (Register rd, Register rs, int32_t j)
 
void xori (Register rd, Register rs, int32_t j)
 
void lui (Register rd, int32_t j)
 
void aui (Register rt, Register rs, int32_t j)
 
void daui (Register rt, Register rs, int32_t j)
 
void dahi (Register rs, int32_t j)
 
void dati (Register rs, int32_t j)
 
void sll (Register rd, Register rt, uint16_t sa, bool coming_from_nop=false)
 
void sllv (Register rd, Register rt, Register rs)
 
void srl (Register rd, Register rt, uint16_t sa)
 
void srlv (Register rd, Register rt, Register rs)
 
void sra (Register rt, Register rd, uint16_t sa)
 
void srav (Register rt, Register rd, Register rs)
 
void rotr (Register rd, Register rt, uint16_t sa)
 
void rotrv (Register rd, Register rt, Register rs)
 
void dsll (Register rd, Register rt, uint16_t sa)
 
void dsllv (Register rd, Register rt, Register rs)
 
void dsrl (Register rd, Register rt, uint16_t sa)
 
void dsrlv (Register rd, Register rt, Register rs)
 
void drotr (Register rd, Register rt, uint16_t sa)
 
void drotr32 (Register rd, Register rt, uint16_t sa)
 
void drotrv (Register rd, Register rt, Register rs)
 
void dsra (Register rt, Register rd, uint16_t sa)
 
void dsrav (Register rd, Register rt, Register rs)
 
void dsll32 (Register rt, Register rd, uint16_t sa)
 
void dsrl32 (Register rt, Register rd, uint16_t sa)
 
void dsra32 (Register rt, Register rd, uint16_t sa)
 
void lb (Register rd, const MemOperand &rs)
 
void lbu (Register rd, const MemOperand &rs)
 
void lh (Register rd, const MemOperand &rs)
 
void lhu (Register rd, const MemOperand &rs)
 
void lw (Register rd, const MemOperand &rs)
 
void lwu (Register rd, const MemOperand &rs)
 
void lwl (Register rd, const MemOperand &rs)
 
void lwr (Register rd, const MemOperand &rs)
 
void sb (Register rd, const MemOperand &rs)
 
void sh (Register rd, const MemOperand &rs)
 
void sw (Register rd, const MemOperand &rs)
 
void swl (Register rd, const MemOperand &rs)
 
void swr (Register rd, const MemOperand &rs)
 
void ldl (Register rd, const MemOperand &rs)
 
void ldr (Register rd, const MemOperand &rs)
 
void sdl (Register rd, const MemOperand &rs)
 
void sdr (Register rd, const MemOperand &rs)
 
void ld (Register rd, const MemOperand &rs)
 
void sd (Register rd, const MemOperand &rs)
 
void ll (Register rd, const MemOperand &rs)
 
void sc (Register rd, const MemOperand &rs)
 
void lld (Register rd, const MemOperand &rs)
 
void scd (Register rd, const MemOperand &rs)
 
void addiupc (Register rs, int32_t imm19)
 
void lwpc (Register rs, int32_t offset19)
 
void lwupc (Register rs, int32_t offset19)
 
void ldpc (Register rs, int32_t offset18)
 
void auipc (Register rs, int16_t imm16)
 
void aluipc (Register rs, int16_t imm16)
 
void pref (int32_t hint, const MemOperand &rs)
 
void break_ (uint32_t code, bool break_as_stop=false)
 
void stop (uint32_t code=kMaxStopCode)
 
void tge (Register rs, Register rt, uint16_t code)
 
void tgeu (Register rs, Register rt, uint16_t code)
 
void tlt (Register rs, Register rt, uint16_t code)
 
void tltu (Register rs, Register rt, uint16_t code)
 
void teq (Register rs, Register rt, uint16_t code)
 
void tne (Register rs, Register rt, uint16_t code)
 
void sync ()
 
void mfhi (Register rd)
 
void mflo (Register rd)
 
void slt (Register rd, Register rs, Register rt)
 
void sltu (Register rd, Register rs, Register rt)
 
void slti (Register rd, Register rs, int32_t j)
 
void sltiu (Register rd, Register rs, int32_t j)
 
void movz (Register rd, Register rs, Register rt)
 
void movn (Register rd, Register rs, Register rt)
 
void movt (Register rd, Register rs, uint16_t cc=0)
 
void movf (Register rd, Register rs, uint16_t cc=0)
 
void sel (SecondaryField fmt, FPURegister fd, FPURegister fs, FPURegister ft)
 
void sel_s (FPURegister fd, FPURegister fs, FPURegister ft)
 
void sel_d (FPURegister fd, FPURegister fs, FPURegister ft)
 
void seleqz (Register rd, Register rs, Register rt)
 
void seleqz (SecondaryField fmt, FPURegister fd, FPURegister fs, FPURegister ft)
 
void selnez (Register rs, Register rt, Register rd)
 
void selnez (SecondaryField fmt, FPURegister fd, FPURegister fs, FPURegister ft)
 
void seleqz_d (FPURegister fd, FPURegister fs, FPURegister ft)
 
void seleqz_s (FPURegister fd, FPURegister fs, FPURegister ft)
 
void selnez_d (FPURegister fd, FPURegister fs, FPURegister ft)
 
void selnez_s (FPURegister fd, FPURegister fs, FPURegister ft)
 
void movz_s (FPURegister fd, FPURegister fs, Register rt)
 
void movz_d (FPURegister fd, FPURegister fs, Register rt)
 
void movt_s (FPURegister fd, FPURegister fs, uint16_t cc=0)
 
void movt_d (FPURegister fd, FPURegister fs, uint16_t cc=0)
 
void movf_s (FPURegister fd, FPURegister fs, uint16_t cc=0)
 
void movf_d (FPURegister fd, FPURegister fs, uint16_t cc=0)
 
void movn_s (FPURegister fd, FPURegister fs, Register rt)
 
void movn_d (FPURegister fd, FPURegister fs, Register rt)
 
void clz (Register rd, Register rs)
 
void dclz (Register rd, Register rs)
 
void ins_ (Register rt, Register rs, uint16_t pos, uint16_t size)
 
void ext_ (Register rt, Register rs, uint16_t pos, uint16_t size)
 
void dext_ (Register rt, Register rs, uint16_t pos, uint16_t size)
 
void dextm_ (Register rt, Register rs, uint16_t pos, uint16_t size)
 
void dextu_ (Register rt, Register rs, uint16_t pos, uint16_t size)
 
void dins_ (Register rt, Register rs, uint16_t pos, uint16_t size)
 
void dinsm_ (Register rt, Register rs, uint16_t pos, uint16_t size)
 
void dinsu_ (Register rt, Register rs, uint16_t pos, uint16_t size)
 
void bitswap (Register rd, Register rt)
 
void dbitswap (Register rd, Register rt)
 
void align (Register rd, Register rs, Register rt, uint8_t bp)
 
void dalign (Register rd, Register rs, Register rt, uint8_t bp)
 
void wsbh (Register rd, Register rt)
 
void dsbh (Register rd, Register rt)
 
void dshd (Register rd, Register rt)
 
void seh (Register rd, Register rt)
 
void seb (Register rd, Register rt)
 
void lwc1 (FPURegister fd, const MemOperand &src)
 
void ldc1 (FPURegister fd, const MemOperand &src)
 
void swc1 (FPURegister fs, const MemOperand &dst)
 
void sdc1 (FPURegister fs, const MemOperand &dst)
 
void mtc1 (Register rt, FPURegister fs)
 
void mthc1 (Register rt, FPURegister fs)
 
void dmtc1 (Register rt, FPURegister fs)
 
void mfc1 (Register rt, FPURegister fs)
 
void mfhc1 (Register rt, FPURegister fs)
 
void dmfc1 (Register rt, FPURegister fs)
 
void ctc1 (Register rt, FPUControlRegister fs)
 
void cfc1 (Register rt, FPUControlRegister fs)
 
void add_s (FPURegister fd, FPURegister fs, FPURegister ft)
 
void add_d (FPURegister fd, FPURegister fs, FPURegister ft)
 
void sub_s (FPURegister fd, FPURegister fs, FPURegister ft)
 
void sub_d (FPURegister fd, FPURegister fs, FPURegister ft)
 
void mul_s (FPURegister fd, FPURegister fs, FPURegister ft)
 
void mul_d (FPURegister fd, FPURegister fs, FPURegister ft)
 
void madd_s (FPURegister fd, FPURegister fr, FPURegister fs, FPURegister ft)
 
void madd_d (FPURegister fd, FPURegister fr, FPURegister fs, FPURegister ft)
 
void msub_s (FPURegister fd, FPURegister fr, FPURegister fs, FPURegister ft)
 
void msub_d (FPURegister fd, FPURegister fr, FPURegister fs, FPURegister ft)
 
void maddf_s (FPURegister fd, FPURegister fs, FPURegister ft)
 
void maddf_d (FPURegister fd, FPURegister fs, FPURegister ft)
 
void msubf_s (FPURegister fd, FPURegister fs, FPURegister ft)
 
void msubf_d (FPURegister fd, FPURegister fs, FPURegister ft)
 
void div_s (FPURegister fd, FPURegister fs, FPURegister ft)
 
void div_d (FPURegister fd, FPURegister fs, FPURegister ft)
 
void abs_s (FPURegister fd, FPURegister fs)
 
void abs_d (FPURegister fd, FPURegister fs)
 
void mov_d (FPURegister fd, FPURegister fs)
 
void mov_s (FPURegister fd, FPURegister fs)
 
void neg_s (FPURegister fd, FPURegister fs)
 
void neg_d (FPURegister fd, FPURegister fs)
 
void sqrt_s (FPURegister fd, FPURegister fs)
 
void sqrt_d (FPURegister fd, FPURegister fs)
 
void rsqrt_s (FPURegister fd, FPURegister fs)
 
void rsqrt_d (FPURegister fd, FPURegister fs)
 
void recip_d (FPURegister fd, FPURegister fs)
 
void recip_s (FPURegister fd, FPURegister fs)
 
void cvt_w_s (FPURegister fd, FPURegister fs)
 
void cvt_w_d (FPURegister fd, FPURegister fs)
 
void trunc_w_s (FPURegister fd, FPURegister fs)
 
void trunc_w_d (FPURegister fd, FPURegister fs)
 
void round_w_s (FPURegister fd, FPURegister fs)
 
void round_w_d (FPURegister fd, FPURegister fs)
 
void floor_w_s (FPURegister fd, FPURegister fs)
 
void floor_w_d (FPURegister fd, FPURegister fs)
 
void ceil_w_s (FPURegister fd, FPURegister fs)
 
void ceil_w_d (FPURegister fd, FPURegister fs)
 
void rint_s (FPURegister fd, FPURegister fs)
 
void rint_d (FPURegister fd, FPURegister fs)
 
void rint (SecondaryField fmt, FPURegister fd, FPURegister fs)
 
void cvt_l_s (FPURegister fd, FPURegister fs)
 
void cvt_l_d (FPURegister fd, FPURegister fs)
 
void trunc_l_s (FPURegister fd, FPURegister fs)
 
void trunc_l_d (FPURegister fd, FPURegister fs)
 
void round_l_s (FPURegister fd, FPURegister fs)
 
void round_l_d (FPURegister fd, FPURegister fs)
 
void floor_l_s (FPURegister fd, FPURegister fs)
 
void floor_l_d (FPURegister fd, FPURegister fs)
 
void ceil_l_s (FPURegister fd, FPURegister fs)
 
void ceil_l_d (FPURegister fd, FPURegister fs)
 
void class_s (FPURegister fd, FPURegister fs)
 
void class_d (FPURegister fd, FPURegister fs)
 
void min (SecondaryField fmt, FPURegister fd, FPURegister fs, FPURegister ft)
 
void mina (SecondaryField fmt, FPURegister fd, FPURegister fs, FPURegister ft)
 
void max (SecondaryField fmt, FPURegister fd, FPURegister fs, FPURegister ft)
 
void maxa (SecondaryField fmt, FPURegister fd, FPURegister fs, FPURegister ft)
 
void min_s (FPURegister fd, FPURegister fs, FPURegister ft)
 
void min_d (FPURegister fd, FPURegister fs, FPURegister ft)
 
void max_s (FPURegister fd, FPURegister fs, FPURegister ft)
 
void max_d (FPURegister fd, FPURegister fs, FPURegister ft)
 
void mina_s (FPURegister fd, FPURegister fs, FPURegister ft)
 
void mina_d (FPURegister fd, FPURegister fs, FPURegister ft)
 
void maxa_s (FPURegister fd, FPURegister fs, FPURegister ft)
 
void maxa_d (FPURegister fd, FPURegister fs, FPURegister ft)
 
void cvt_s_w (FPURegister fd, FPURegister fs)
 
void cvt_s_l (FPURegister fd, FPURegister fs)
 
void cvt_s_d (FPURegister fd, FPURegister fs)
 
void cvt_d_w (FPURegister fd, FPURegister fs)
 
void cvt_d_l (FPURegister fd, FPURegister fs)
 
void cvt_d_s (FPURegister fd, FPURegister fs)
 
void cmp (FPUCondition cond, SecondaryField fmt, FPURegister fd, FPURegister ft, FPURegister fs)
 
void cmp_s (FPUCondition cond, FPURegister fd, FPURegister fs, FPURegister ft)
 
void cmp_d (FPUCondition cond, FPURegister fd, FPURegister fs, FPURegister ft)
 
void bc1eqz (int16_t offset, FPURegister ft)
 
void bc1eqz (Label *L, FPURegister ft)
 
void bc1nez (int16_t offset, FPURegister ft)
 
void bc1nez (Label *L, FPURegister ft)
 
void c (FPUCondition cond, SecondaryField fmt, FPURegister ft, FPURegister fs, uint16_t cc=0)
 
void c_s (FPUCondition cond, FPURegister ft, FPURegister fs, uint16_t cc=0)
 
void c_d (FPUCondition cond, FPURegister ft, FPURegister fs, uint16_t cc=0)
 
void bc1f (int16_t offset, uint16_t cc=0)
 
void bc1f (Label *L, uint16_t cc=0)
 
void bc1t (int16_t offset, uint16_t cc=0)
 
void bc1t (Label *L, uint16_t cc=0)
 
void fcmp (FPURegister src1, const double src2, FPUCondition cond)
 
void bz_v (MSARegister wt, int16_t offset)
 
void bz_v (MSARegister wt, Label *L)
 
void bz_b (MSARegister wt, int16_t offset)
 
void bz_b (MSARegister wt, Label *L)
 
void bz_h (MSARegister wt, int16_t offset)
 
void bz_h (MSARegister wt, Label *L)
 
void bz_w (MSARegister wt, int16_t offset)
 
void bz_w (MSARegister wt, Label *L)
 
void bz_d (MSARegister wt, int16_t offset)
 
void bz_d (MSARegister wt, Label *L)
 
void bnz_v (MSARegister wt, int16_t offset)
 
void bnz_v (MSARegister wt, Label *L)
 
void bnz_b (MSARegister wt, int16_t offset)
 
void bnz_b (MSARegister wt, Label *L)
 
void bnz_h (MSARegister wt, int16_t offset)
 
void bnz_h (MSARegister wt, Label *L)
 
void bnz_w (MSARegister wt, int16_t offset)
 
void bnz_w (MSARegister wt, Label *L)
 
void bnz_d (MSARegister wt, int16_t offset)
 
void bnz_d (MSARegister wt, Label *L)
 
void ld_b (MSARegister wd, const MemOperand &rs)
 
void ld_h (MSARegister wd, const MemOperand &rs)
 
void ld_w (MSARegister wd, const MemOperand &rs)
 
void ld_d (MSARegister wd, const MemOperand &rs)
 
void st_b (MSARegister wd, const MemOperand &rs)
 
void st_h (MSARegister wd, const MemOperand &rs)
 
void st_w (MSARegister wd, const MemOperand &rs)
 
void st_d (MSARegister wd, const MemOperand &rs)
 
void ldi_b (MSARegister wd, int32_t imm10)
 
void ldi_h (MSARegister wd, int32_t imm10)
 
void ldi_w (MSARegister wd, int32_t imm10)
 
void ldi_d (MSARegister wd, int32_t imm10)
 
void addvi_b (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void addvi_h (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void addvi_w (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void addvi_d (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void subvi_b (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void subvi_h (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void subvi_w (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void subvi_d (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void maxi_s_b (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void maxi_s_h (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void maxi_s_w (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void maxi_s_d (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void maxi_u_b (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void maxi_u_h (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void maxi_u_w (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void maxi_u_d (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void mini_s_b (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void mini_s_h (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void mini_s_w (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void mini_s_d (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void mini_u_b (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void mini_u_h (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void mini_u_w (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void mini_u_d (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void ceqi_b (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void ceqi_h (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void ceqi_w (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void ceqi_d (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void clti_s_b (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void clti_s_h (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void clti_s_w (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void clti_s_d (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void clti_u_b (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void clti_u_h (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void clti_u_w (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void clti_u_d (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void clei_s_b (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void clei_s_h (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void clei_s_w (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void clei_s_d (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void clei_u_b (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void clei_u_h (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void clei_u_w (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void clei_u_d (MSARegister wd, MSARegister ws, uint32_t imm5)
 
void andi_b (MSARegister wd, MSARegister ws, uint32_t imm8)
 
void ori_b (MSARegister wd, MSARegister ws, uint32_t imm8)
 
void nori_b (MSARegister wd, MSARegister ws, uint32_t imm8)
 
void xori_b (MSARegister wd, MSARegister ws, uint32_t imm8)
 
void bmnzi_b (MSARegister wd, MSARegister ws, uint32_t imm8)
 
void bmzi_b (MSARegister wd, MSARegister ws, uint32_t imm8)
 
void bseli_b (MSARegister wd, MSARegister ws, uint32_t imm8)
 
void shf_b (MSARegister wd, MSARegister ws, uint32_t imm8)
 
void shf_h (MSARegister wd, MSARegister ws, uint32_t imm8)
 
void shf_w (MSARegister wd, MSARegister ws, uint32_t imm8)
 
void and_v (MSARegister wd, MSARegister ws, MSARegister wt)
 
void or_v (MSARegister wd, MSARegister ws, MSARegister wt)
 
void nor_v (MSARegister wd, MSARegister ws, MSARegister wt)
 
void xor_v (MSARegister wd, MSARegister ws, MSARegister wt)
 
void bmnz_v (MSARegister wd, MSARegister ws, MSARegister wt)
 
void bmz_v (MSARegister wd, MSARegister ws, MSARegister wt)
 
void bsel_v (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fill_b (MSARegister wd, Register rs)
 
void fill_h (MSARegister wd, Register rs)
 
void fill_w (MSARegister wd, Register rs)
 
void fill_d (MSARegister wd, Register rs)
 
void pcnt_b (MSARegister wd, MSARegister ws)
 
void pcnt_h (MSARegister wd, MSARegister ws)
 
void pcnt_w (MSARegister wd, MSARegister ws)
 
void pcnt_d (MSARegister wd, MSARegister ws)
 
void nloc_b (MSARegister wd, MSARegister ws)
 
void nloc_h (MSARegister wd, MSARegister ws)
 
void nloc_w (MSARegister wd, MSARegister ws)
 
void nloc_d (MSARegister wd, MSARegister ws)
 
void nlzc_b (MSARegister wd, MSARegister ws)
 
void nlzc_h (MSARegister wd, MSARegister ws)
 
void nlzc_w (MSARegister wd, MSARegister ws)
 
void nlzc_d (MSARegister wd, MSARegister ws)
 
void fclass_w (MSARegister wd, MSARegister ws)
 
void fclass_d (MSARegister wd, MSARegister ws)
 
void ftrunc_s_w (MSARegister wd, MSARegister ws)
 
void ftrunc_s_d (MSARegister wd, MSARegister ws)
 
void ftrunc_u_w (MSARegister wd, MSARegister ws)
 
void ftrunc_u_d (MSARegister wd, MSARegister ws)
 
void fsqrt_w (MSARegister wd, MSARegister ws)
 
void fsqrt_d (MSARegister wd, MSARegister ws)
 
void frsqrt_w (MSARegister wd, MSARegister ws)
 
void frsqrt_d (MSARegister wd, MSARegister ws)
 
void frcp_w (MSARegister wd, MSARegister ws)
 
void frcp_d (MSARegister wd, MSARegister ws)
 
void frint_w (MSARegister wd, MSARegister ws)
 
void frint_d (MSARegister wd, MSARegister ws)
 
void flog2_w (MSARegister wd, MSARegister ws)
 
void flog2_d (MSARegister wd, MSARegister ws)
 
void fexupl_w (MSARegister wd, MSARegister ws)
 
void fexupl_d (MSARegister wd, MSARegister ws)
 
void fexupr_w (MSARegister wd, MSARegister ws)
 
void fexupr_d (MSARegister wd, MSARegister ws)
 
void ffql_w (MSARegister wd, MSARegister ws)
 
void ffql_d (MSARegister wd, MSARegister ws)
 
void ffqr_w (MSARegister wd, MSARegister ws)
 
void ffqr_d (MSARegister wd, MSARegister ws)
 
void ftint_s_w (MSARegister wd, MSARegister ws)
 
void ftint_s_d (MSARegister wd, MSARegister ws)
 
void ftint_u_w (MSARegister wd, MSARegister ws)
 
void ftint_u_d (MSARegister wd, MSARegister ws)
 
void ffint_s_w (MSARegister wd, MSARegister ws)
 
void ffint_s_d (MSARegister wd, MSARegister ws)
 
void ffint_u_w (MSARegister wd, MSARegister ws)
 
void ffint_u_d (MSARegister wd, MSARegister ws)
 
void sll_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void sll_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void sll_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void sll_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void sra_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void sra_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void sra_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void sra_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void srl_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void srl_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void srl_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void srl_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void bclr_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void bclr_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void bclr_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void bclr_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void bset_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void bset_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void bset_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void bset_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void bneg_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void bneg_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void bneg_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void bneg_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void binsl_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void binsl_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void binsl_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void binsl_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void binsr_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void binsr_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void binsr_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void binsr_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void addv_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void addv_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void addv_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void addv_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void subv_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void subv_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void subv_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void subv_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void max_s_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void max_s_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void max_s_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void max_s_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void max_u_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void max_u_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void max_u_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void max_u_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void min_s_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void min_s_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void min_s_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void min_s_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void min_u_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void min_u_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void min_u_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void min_u_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void max_a_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void max_a_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void max_a_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void max_a_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void min_a_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void min_a_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void min_a_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void min_a_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void ceq_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void ceq_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void ceq_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void ceq_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void clt_s_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void clt_s_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void clt_s_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void clt_s_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void clt_u_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void clt_u_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void clt_u_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void clt_u_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void cle_s_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void cle_s_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void cle_s_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void cle_s_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void cle_u_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void cle_u_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void cle_u_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void cle_u_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void add_a_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void add_a_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void add_a_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void add_a_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void adds_a_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void adds_a_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void adds_a_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void adds_a_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void adds_s_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void adds_s_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void adds_s_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void adds_s_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void adds_u_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void adds_u_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void adds_u_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void adds_u_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void ave_s_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void ave_s_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void ave_s_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void ave_s_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void ave_u_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void ave_u_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void ave_u_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void ave_u_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void aver_s_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void aver_s_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void aver_s_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void aver_s_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void aver_u_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void aver_u_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void aver_u_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void aver_u_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void subs_s_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void subs_s_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void subs_s_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void subs_s_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void subs_u_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void subs_u_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void subs_u_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void subs_u_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void subsus_u_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void subsus_u_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void subsus_u_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void subsus_u_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void subsus_s_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void subsus_s_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void subsus_s_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void subsus_s_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void subsuu_u_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void subsuu_u_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void subsuu_u_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void subsuu_u_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void subsuu_s_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void subsuu_s_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void subsuu_s_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void subsuu_s_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void asub_s_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void asub_s_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void asub_s_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void asub_s_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void asub_u_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void asub_u_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void asub_u_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void asub_u_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void mulv_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void mulv_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void mulv_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void mulv_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void maddv_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void maddv_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void maddv_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void maddv_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void msubv_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void msubv_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void msubv_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void msubv_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void div_s_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void div_s_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void div_s_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void div_s_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void div_u_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void div_u_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void div_u_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void div_u_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void mod_s_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void mod_s_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void mod_s_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void mod_s_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void mod_u_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void mod_u_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void mod_u_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void mod_u_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void dotp_s_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void dotp_s_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void dotp_s_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void dotp_s_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void dotp_u_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void dotp_u_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void dotp_u_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void dotp_u_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void dpadd_s_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void dpadd_s_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void dpadd_s_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void dpadd_s_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void dpadd_u_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void dpadd_u_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void dpadd_u_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void dpadd_u_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void dpsub_s_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void dpsub_s_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void dpsub_s_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void dpsub_s_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void dpsub_u_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void dpsub_u_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void dpsub_u_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void dpsub_u_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void sld_b (MSARegister wd, MSARegister ws, Register rt)
 
void sld_h (MSARegister wd, MSARegister ws, Register rt)
 
void sld_w (MSARegister wd, MSARegister ws, Register rt)
 
void sld_d (MSARegister wd, MSARegister ws, Register rt)
 
void splat_b (MSARegister wd, MSARegister ws, Register rt)
 
void splat_h (MSARegister wd, MSARegister ws, Register rt)
 
void splat_w (MSARegister wd, MSARegister ws, Register rt)
 
void splat_d (MSARegister wd, MSARegister ws, Register rt)
 
void pckev_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void pckev_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void pckev_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void pckev_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void pckod_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void pckod_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void pckod_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void pckod_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void ilvl_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void ilvl_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void ilvl_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void ilvl_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void ilvr_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void ilvr_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void ilvr_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void ilvr_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void ilvev_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void ilvev_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void ilvev_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void ilvev_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void ilvod_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void ilvod_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void ilvod_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void ilvod_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void vshf_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void vshf_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void vshf_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void vshf_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void srar_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void srar_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void srar_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void srar_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void srlr_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void srlr_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void srlr_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void srlr_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void hadd_s_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void hadd_s_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void hadd_s_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void hadd_s_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void hadd_u_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void hadd_u_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void hadd_u_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void hadd_u_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void hsub_s_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void hsub_s_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void hsub_s_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void hsub_s_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void hsub_u_b (MSARegister wd, MSARegister ws, MSARegister wt)
 
void hsub_u_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void hsub_u_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void hsub_u_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fcaf_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fcaf_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fcun_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fcun_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fceq_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fceq_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fcueq_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fcueq_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fclt_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fclt_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fcult_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fcult_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fcle_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fcle_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fcule_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fcule_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fsaf_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fsaf_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fsun_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fsun_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fseq_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fseq_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fsueq_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fsueq_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fslt_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fslt_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fsult_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fsult_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fsle_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fsle_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fsule_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fsule_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fadd_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fadd_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fsub_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fsub_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fmul_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fmul_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fdiv_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fdiv_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fmadd_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fmadd_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fmsub_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fmsub_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fexp2_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fexp2_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fexdo_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fexdo_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void ftq_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void ftq_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fmin_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fmin_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fmin_a_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fmin_a_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fmax_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fmax_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fmax_a_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fmax_a_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fcor_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fcor_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fcune_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fcune_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fcne_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fcne_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void mul_q_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void mul_q_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void madd_q_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void madd_q_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void msub_q_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void msub_q_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fsor_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fsor_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fsune_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fsune_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fsne_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void fsne_d (MSARegister wd, MSARegister ws, MSARegister wt)
 
void mulr_q_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void mulr_q_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void maddr_q_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void maddr_q_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void msubr_q_h (MSARegister wd, MSARegister ws, MSARegister wt)
 
void msubr_q_w (MSARegister wd, MSARegister ws, MSARegister wt)
 
void sldi_b (MSARegister wd, MSARegister ws, uint32_t n)
 
void sldi_h (MSARegister wd, MSARegister ws, uint32_t n)
 
void sldi_w (MSARegister wd, MSARegister ws, uint32_t n)
 
void sldi_d (MSARegister wd, MSARegister ws, uint32_t n)
 
void splati_b (MSARegister wd, MSARegister ws, uint32_t n)
 
void splati_h (MSARegister wd, MSARegister ws, uint32_t n)
 
void splati_w (MSARegister wd, MSARegister ws, uint32_t n)
 
void splati_d (MSARegister wd, MSARegister ws, uint32_t n)
 
void copy_s_b (Register rd, MSARegister ws, uint32_t n)
 
void copy_s_h (Register rd, MSARegister ws, uint32_t n)
 
void copy_s_w (Register rd, MSARegister ws, uint32_t n)
 
void copy_s_d (Register rd, MSARegister ws, uint32_t n)
 
void copy_u_b (Register rd, MSARegister ws, uint32_t n)
 
void copy_u_h (Register rd, MSARegister ws, uint32_t n)
 
void copy_u_w (Register rd, MSARegister ws, uint32_t n)
 
void insert_b (MSARegister wd, uint32_t n, Register rs)
 
void insert_h (MSARegister wd, uint32_t n, Register rs)
 
void insert_w (MSARegister wd, uint32_t n, Register rs)
 
void insert_d (MSARegister wd, uint32_t n, Register rs)
 
void insve_b (MSARegister wd, uint32_t n, MSARegister ws)
 
void insve_h (MSARegister wd, uint32_t n, MSARegister ws)
 
void insve_w (MSARegister wd, uint32_t n, MSARegister ws)
 
void insve_d (MSARegister wd, uint32_t n, MSARegister ws)
 
void move_v (MSARegister wd, MSARegister ws)
 
void ctcmsa (MSAControlRegister cd, Register rs)
 
void cfcmsa (Register rd, MSAControlRegister cs)
 
void slli_b (MSARegister wd, MSARegister ws, uint32_t m)
 
void slli_h (MSARegister wd, MSARegister ws, uint32_t m)
 
void slli_w (MSARegister wd, MSARegister ws, uint32_t m)
 
void slli_d (MSARegister wd, MSARegister ws, uint32_t m)
 
void srai_b (MSARegister wd, MSARegister ws, uint32_t m)
 
void srai_h (MSARegister wd, MSARegister ws, uint32_t m)
 
void srai_w (MSARegister wd, MSARegister ws, uint32_t m)
 
void srai_d (MSARegister wd, MSARegister ws, uint32_t m)
 
void srli_b (MSARegister wd, MSARegister ws, uint32_t m)
 
void srli_h (MSARegister wd, MSARegister ws, uint32_t m)
 
void srli_w (MSARegister wd, MSARegister ws, uint32_t m)
 
void srli_d (MSARegister wd, MSARegister ws, uint32_t m)
 
void bclri_b (MSARegister wd, MSARegister ws, uint32_t m)
 
void bclri_h (MSARegister wd, MSARegister ws, uint32_t m)
 
void bclri_w (MSARegister wd, MSARegister ws, uint32_t m)
 
void bclri_d (MSARegister wd, MSARegister ws, uint32_t m)
 
void bseti_b (MSARegister wd, MSARegister ws, uint32_t m)
 
void bseti_h (MSARegister wd, MSARegister ws, uint32_t m)
 
void bseti_w (MSARegister wd, MSARegister ws, uint32_t m)
 
void bseti_d (MSARegister wd, MSARegister ws, uint32_t m)
 
void bnegi_b (MSARegister wd, MSARegister ws, uint32_t m)
 
void bnegi_h (MSARegister wd, MSARegister ws, uint32_t m)
 
void bnegi_w (MSARegister wd, MSARegister ws, uint32_t m)
 
void bnegi_d (MSARegister wd, MSARegister ws, uint32_t m)
 
void binsli_b (MSARegister wd, MSARegister ws, uint32_t m)
 
void binsli_h (MSARegister wd, MSARegister ws, uint32_t m)
 
void binsli_w (MSARegister wd, MSARegister ws, uint32_t m)
 
void binsli_d (MSARegister wd, MSARegister ws, uint32_t m)
 
void binsri_b (MSARegister wd, MSARegister ws, uint32_t m)
 
void binsri_h (MSARegister wd, MSARegister ws, uint32_t m)
 
void binsri_w (MSARegister wd, MSARegister ws, uint32_t m)
 
void binsri_d (MSARegister wd, MSARegister ws, uint32_t m)
 
void sat_s_b (MSARegister wd, MSARegister ws, uint32_t m)
 
void sat_s_h (MSARegister wd, MSARegister ws, uint32_t m)
 
void sat_s_w (MSARegister wd, MSARegister ws, uint32_t m)
 
void sat_s_d (MSARegister wd, MSARegister ws, uint32_t m)
 
void sat_u_b (MSARegister wd, MSARegister ws, uint32_t m)
 
void sat_u_h (MSARegister wd, MSARegister ws, uint32_t m)
 
void sat_u_w (MSARegister wd, MSARegister ws, uint32_t m)
 
void sat_u_d (MSARegister wd, MSARegister ws, uint32_t m)
 
void srari_b (MSARegister wd, MSARegister ws, uint32_t m)
 
void srari_h (MSARegister wd, MSARegister ws, uint32_t m)
 
void srari_w (MSARegister wd, MSARegister ws, uint32_t m)
 
void srari_d (MSARegister wd, MSARegister ws, uint32_t m)
 
void srlri_b (MSARegister wd, MSARegister ws, uint32_t m)
 
void srlri_h (MSARegister wd, MSARegister ws, uint32_t m)
 
void srlri_w (MSARegister wd, MSARegister ws, uint32_t m)
 
void srlri_d (MSARegister wd, MSARegister ws, uint32_t m)
 
int SizeOfCodeGeneratedSince (Label *label)
 
int InstructionsGeneratedSince (Label *label)
 
void RecordDeoptReason (DeoptimizeReason reason, uint32_t node_id, SourcePosition position, int id)
 
void db (uint8_t data)
 
void dd (uint32_t data)
 
void dq (uint64_t data)
 
void dp (uintptr_t data)
 
void dd (Label *label)
 
void BlockTrampolinePoolFor (int instructions)
 
bool overflow () const
 
intptr_t available_space () const
 
Instr instr_at (int pos)
 
void instr_at_put (int pos, Instr instr, WritableJitAllocation *jit_allocation=nullptr)
 
void CheckTrampolinePool ()
 
bool IsPrevInstrCompactBranch ()
 
int UnboundLabelsCount ()
 
bool is_trampoline_emitted () const
 
 Assembler (const AssemblerOptions &, std::unique_ptr< AssemblerBuffer >={})
 
 Assembler (const MaybeAssemblerZone &, const AssemblerOptions &options, std::unique_ptr< AssemblerBuffer > buffer={})
 
virtual ~Assembler ()
 
void GetCode (LocalIsolate *isolate, CodeDesc *desc, SafepointTableBuilderBase *safepoint_table_builder, int handler_table_offset)
 
void GetCode (Isolate *isolate, CodeDesc *desc)
 
void GetCode (LocalIsolate *isolate, CodeDesc *desc)
 
void MaybeEmitOutOfLineConstantPool ()
 
void CheckTrampolinePoolQuick (int extra_space=0)
 
void bind (Label *L)
 
int link (Label *L)
 
bool is_near (Label *L, Condition cond)
 
int branch_offset (Label *L)
 
void PatchConstantPoolAccessInstruction (int pc_offset, int offset, ConstantPoolEntry::Access access, ConstantPoolEntry::Type type)
 
Handle< Objectcode_target_object_handle_at (Address pc, Address constant_pool)
 
Handle< HeapObjectcompressed_embedded_object_handle_at (Address pc, Address constant_pool)
 
void x_form (Instr instr, int f1, int f2, int f3, int rc)
 
void x_form (Instr instr, Register rs, Register ra, Register rb, RCBit rc)
 
void x_form (Instr instr, Register ra, Register rs, Register rb, EHBit eh=SetEH)
 
void x_form (Instr instr, CRegister cr, Register s1, Register s2, RCBit rc)
 
void notx (Register dst, Register src, RCBit rc=LeaveRC)
 
void lwax (Register rt, const MemOperand &src)
 
void extsw (Register rs, Register ra, RCBit rc=LeaveRC)
 
template<typename T >
void xx2_form (Instr instr, T t, T b)
 
void xx3_form (Instr instr, Simd128Register t, Simd128Register a, Simd128Register b, int rc)
 
template<typename T >
void xx3_form (Instr instr, T t, T a, T b)
 
void vx_form (Instr instr, Simd128Register rt, Simd128Register rb, const Operand &imm)
 
void vx_form (Instr instr, Simd128Register rt, Simd128Register ra, Simd128Register rb)
 
void vx_form (Instr instr, Simd128Register rt, Simd128Register rb)
 
void vx_form (Instr instr, Simd128Register rt, const Operand &imm)
 
void vx_form (Instr instr, Register rt, Simd128Register rb)
 
void vx_form (Instr instr, Simd128Register rt, Register rb, const Operand &imm)
 
 PPC_VX_OPCODE_D_FORM_LIST (DECLARE_PPC_VX_INSTRUCTIONS_C_FORM) inline void va_form(Instr instr
 
void vc_form (Instr instr, Simd128Register rt, Simd128Register ra, Simd128Register rb, int rc)
 
void prefix_form (Instr instr, const Operand &imm, int pr)
 
RegListGetScratchRegisterList ()
 
void Align (int m)
 
void DataAlign (int m)
 
void CodeTargetAlign ()
 
void LoopHeaderAlign ()
 
void bclr (BOfield bo, int condition_bit, LKBit lk)
 
void blr ()
 
void bc (int branch_offset, BOfield bo, int condition_bit, LKBit lk=LeaveLK)
 
void b (int branch_offset, LKBit lk)
 
void bcctr (BOfield bo, int condition_bit, LKBit lk)
 
void bctr ()
 
void bctrl ()
 
void b (Label *L, LKBit lk=LeaveLK)
 
CRegister cmpi_optimization (CRegister cr)
 
void bc_short (Condition cond, Label *L, CRegister cr=cr0, LKBit lk=LeaveLK)
 
void bclr (Condition cond, CRegister cr=cr0, LKBit lk=LeaveLK)
 
void isel (Register rt, Register ra, Register rb, int cb)
 
void isel (Condition cond, Register rt, Register ra, Register rb, CRegister cr=cr0)
 
void b (Condition cond, Label *L, CRegister cr=cr0, LKBit lk=LeaveLK)
 
void bne (Label *L, CRegister cr=cr0, LKBit lk=LeaveLK)
 
void beq (Label *L, CRegister cr=cr0, LKBit lk=LeaveLK)
 
void blt (Label *L, CRegister cr=cr0, LKBit lk=LeaveLK)
 
void bge (Label *L, CRegister cr=cr0, LKBit lk=LeaveLK)
 
void ble (Label *L, CRegister cr=cr0, LKBit lk=LeaveLK)
 
void bgt (Label *L, CRegister cr=cr0, LKBit lk=LeaveLK)
 
void bunordered (Label *L, CRegister cr=cr0, LKBit lk=LeaveLK)
 
void bordered (Label *L, CRegister cr=cr0, LKBit lk=LeaveLK)
 
void boverflow (Label *L, CRegister cr=cr0, LKBit lk=LeaveLK)
 
void bnooverflow (Label *L, CRegister cr=cr0, LKBit lk=LeaveLK)
 
void bdnz (Label *L, LKBit lk=LeaveLK)
 
void sub (Register dst, Register src1, Register src2, OEBit s=LeaveOE, RCBit r=LeaveRC)
 
void subc (Register dst, Register src1, Register src2, OEBit s=LeaveOE, RCBit r=LeaveRC)
 
void sube (Register dst, Register src1, Register src2, OEBit s=LeaveOE, RCBit r=LeaveRC)
 
void subfic (Register dst, Register src, const Operand &imm)
 
void add (Register dst, Register src1, Register src2, OEBit s=LeaveOE, RCBit r=LeaveRC)
 
void addc (Register dst, Register src1, Register src2, OEBit o=LeaveOE, RCBit r=LeaveRC)
 
void adde (Register dst, Register src1, Register src2, OEBit o=LeaveOE, RCBit r=LeaveRC)
 
void addze (Register dst, Register src1, OEBit o=LeaveOE, RCBit r=LeaveRC)
 
void mullw (Register dst, Register src1, Register src2, OEBit o=LeaveOE, RCBit r=LeaveRC)
 
void mulhw (Register dst, Register src1, Register src2, RCBit r=LeaveRC)
 
void mulhwu (Register dst, Register src1, Register src2, RCBit r=LeaveRC)
 
void mulhd (Register dst, Register src1, Register src2, RCBit r=LeaveRC)
 
void mulhdu (Register dst, Register src1, Register src2, RCBit r=LeaveRC)
 
void mulli (Register dst, Register src, const Operand &imm)
 
void divw (Register dst, Register src1, Register src2, OEBit o=LeaveOE, RCBit r=LeaveRC)
 
void divwu (Register dst, Register src1, Register src2, OEBit o=LeaveOE, RCBit r=LeaveRC)
 
void addi (Register dst, Register src, const Operand &imm)
 
void addis (Register dst, Register src, const Operand &imm)
 
void addic (Register dst, Register src, const Operand &imm)
 
void andi (Register ra, Register rs, const Operand &imm)
 
void andis (Register ra, Register rs, const Operand &imm)
 
void ori (Register dst, Register src, const Operand &imm)
 
void oris (Register dst, Register src, const Operand &imm)
 
void xori (Register dst, Register src, const Operand &imm)
 
void xoris (Register ra, Register rs, const Operand &imm)
 
void cmpi (Register src1, const Operand &src2, CRegister cr=cr0)
 
void cmpli (Register src1, const Operand &src2, CRegister cr=cr0)
 
void cmpwi (Register src1, const Operand &src2, CRegister cr=cr0)
 
void cmplwi (Register src1, const Operand &src2, CRegister cr=cr0)
 
void li (Register dst, const Operand &src)
 
void lis (Register dst, const Operand &imm)
 
void mr (Register dst, Register src)
 
void lbz (Register dst, const MemOperand &src)
 
void lhz (Register dst, const MemOperand &src)
 
void lha (Register dst, const MemOperand &src)
 
void lwz (Register dst, const MemOperand &src)
 
void lwzu (Register dst, const MemOperand &src)
 
void lwa (Register dst, const MemOperand &src)
 
void stb (Register dst, const MemOperand &src)
 
void sth (Register dst, const MemOperand &src)
 
void stw (Register dst, const MemOperand &src)
 
void stwu (Register dst, const MemOperand &src)
 
void neg (Register rt, Register ra, OEBit o=LeaveOE, RCBit c=LeaveRC)
 
void ld (Register rd, const MemOperand &src)
 
void ldu (Register rd, const MemOperand &src)
 
void std (Register rs, const MemOperand &src)
 
void stdu (Register rs, const MemOperand &src)
 
void rldic (Register dst, Register src, int sh, int mb, RCBit r=LeaveRC)
 
void rldicl (Register dst, Register src, int sh, int mb, RCBit r=LeaveRC)
 
void rldcl (Register ra, Register rs, Register rb, int mb, RCBit r=LeaveRC)
 
void rldicr (Register dst, Register src, int sh, int me, RCBit r=LeaveRC)
 
void rldimi (Register dst, Register src, int sh, int mb, RCBit r=LeaveRC)
 
void sldi (Register dst, Register src, const Operand &val, RCBit rc=LeaveRC)
 
void srdi (Register dst, Register src, const Operand &val, RCBit rc=LeaveRC)
 
void clrrdi (Register dst, Register src, const Operand &val, RCBit rc=LeaveRC)
 
void clrldi (Register dst, Register src, const Operand &val, RCBit rc=LeaveRC)
 
void sradi (Register ra, Register rs, int sh, RCBit r=LeaveRC)
 
void rotld (Register ra, Register rs, Register rb, RCBit r=LeaveRC)
 
void rotldi (Register ra, Register rs, int sh, RCBit r=LeaveRC)
 
void rotrdi (Register ra, Register rs, int sh, RCBit r=LeaveRC)
 
void mulld (Register dst, Register src1, Register src2, OEBit o=LeaveOE, RCBit r=LeaveRC)
 
void divd (Register dst, Register src1, Register src2, OEBit o=LeaveOE, RCBit r=LeaveRC)
 
void divdu (Register dst, Register src1, Register src2, OEBit o=LeaveOE, RCBit r=LeaveRC)
 
void rlwinm (Register ra, Register rs, int sh, int mb, int me, RCBit rc=LeaveRC)
 
void rlwimi (Register ra, Register rs, int sh, int mb, int me, RCBit rc=LeaveRC)
 
void rlwnm (Register ra, Register rs, Register rb, int mb, int me, RCBit rc=LeaveRC)
 
void slwi (Register dst, Register src, const Operand &val, RCBit rc=LeaveRC)
 
void srwi (Register dst, Register src, const Operand &val, RCBit rc=LeaveRC)
 
void clrrwi (Register dst, Register src, const Operand &val, RCBit rc=LeaveRC)
 
void clrlwi (Register dst, Register src, const Operand &val, RCBit rc=LeaveRC)
 
void rotlw (Register ra, Register rs, Register rb, RCBit r=LeaveRC)
 
void rotlwi (Register ra, Register rs, int sh, RCBit r=LeaveRC)
 
void rotrwi (Register ra, Register rs, int sh, RCBit r=LeaveRC)
 
void subi (Register dst, Register src1, const Operand &src2)
 
void mov (Register dst, const Operand &src)
 
void bitwise_mov (Register dst, intptr_t value)
 
void bitwise_mov32 (Register dst, int32_t value)
 
void bitwise_add32 (Register dst, Register src, int32_t value)
 
void patch_pc_address (Register dst, int pc_offset, int return_address_offset)
 
void mov_label_offset (Register dst, Label *label)
 
void add_label_offset (Register dst, Register base, Label *label, int delta=0)
 
void mov_label_addr (Register dst, Label *label)
 
void emit_label_addr (Label *label)
 
void mul (Register dst, Register src1, Register src2, OEBit s=LeaveOE, RCBit r=LeaveRC)
 
void crxor (int bt, int ba, int bb)
 
void crclr (int bt)
 
void creqv (int bt, int ba, int bb)
 
void crset (int bt)
 
void mflr (Register dst)
 
void mtlr (Register src)
 
void mtctr (Register src)
 
void mtxer (Register src)
 
void mcrfs (CRegister cr, FPSCRBit bit)
 
void mfcr (Register dst)
 
void mtcrf (Register src, uint8_t FXM)
 
void mffprd (Register dst, DoubleRegister src)
 
void mffprwz (Register dst, DoubleRegister src)
 
void mtfprd (DoubleRegister dst, Register src)
 
void mtfprwz (DoubleRegister dst, Register src)
 
void mtfprwa (DoubleRegister dst, Register src)
 
void stop (Condition cond=al, int32_t code=kDefaultStopCode, CRegister cr=cr0)
 
void bkpt (uint32_t imm16)
 
void dcbf (Register ra, Register rb)
 
void sync ()
 
void lwsync ()
 
void icbi (Register ra, Register rb)
 
void isync ()
 
void lfd (const DoubleRegister frt, const MemOperand &src)
 
void lfdu (const DoubleRegister frt, const MemOperand &src)
 
void lfs (const DoubleRegister frt, const MemOperand &src)
 
void lfsu (const DoubleRegister frt, const MemOperand &src)
 
void stfd (const DoubleRegister frs, const MemOperand &src)
 
void stfdu (const DoubleRegister frs, const MemOperand &src)
 
void stfs (const DoubleRegister frs, const MemOperand &src)
 
void stfsu (const DoubleRegister frs, const MemOperand &src)
 
void fadd (const DoubleRegister frt, const DoubleRegister fra, const DoubleRegister frb, RCBit rc=LeaveRC)
 
void fsub (const DoubleRegister frt, const DoubleRegister fra, const DoubleRegister frb, RCBit rc=LeaveRC)
 
void fdiv (const DoubleRegister frt, const DoubleRegister fra, const DoubleRegister frb, RCBit rc=LeaveRC)
 
void fmul (const DoubleRegister frt, const DoubleRegister fra, const DoubleRegister frc, RCBit rc=LeaveRC)
 
void fcmpu (const DoubleRegister fra, const DoubleRegister frb, CRegister cr=cr0)
 
void fmr (const DoubleRegister frt, const DoubleRegister frb, RCBit rc=LeaveRC)
 
void fctiwz (const DoubleRegister frt, const DoubleRegister frb)
 
void fctiw (const DoubleRegister frt, const DoubleRegister frb)
 
void fctiwuz (const DoubleRegister frt, const DoubleRegister frb)
 
void frin (const DoubleRegister frt, const DoubleRegister frb, RCBit rc=LeaveRC)
 
void friz (const DoubleRegister frt, const DoubleRegister frb, RCBit rc=LeaveRC)
 
void frip (const DoubleRegister frt, const DoubleRegister frb, RCBit rc=LeaveRC)
 
void frim (const DoubleRegister frt, const DoubleRegister frb, RCBit rc=LeaveRC)
 
void frsp (const DoubleRegister frt, const DoubleRegister frb, RCBit rc=LeaveRC)
 
void fcfid (const DoubleRegister frt, const DoubleRegister frb, RCBit rc=LeaveRC)
 
void fcfidu (const DoubleRegister frt, const DoubleRegister frb, RCBit rc=LeaveRC)
 
void fcfidus (const DoubleRegister frt, const DoubleRegister frb, RCBit rc=LeaveRC)
 
void fcfids (const DoubleRegister frt, const DoubleRegister frb, RCBit rc=LeaveRC)
 
void fctid (const DoubleRegister frt, const DoubleRegister frb, RCBit rc=LeaveRC)
 
void fctidz (const DoubleRegister frt, const DoubleRegister frb, RCBit rc=LeaveRC)
 
void fctidu (const DoubleRegister frt, const DoubleRegister frb, RCBit rc=LeaveRC)
 
void fctiduz (const DoubleRegister frt, const DoubleRegister frb, RCBit rc=LeaveRC)
 
void fsel (const DoubleRegister frt, const DoubleRegister fra, const DoubleRegister frc, const DoubleRegister frb, RCBit rc=LeaveRC)
 
void fneg (const DoubleRegister frt, const DoubleRegister frb, RCBit rc=LeaveRC)
 
void mtfsb0 (FPSCRBit bit, RCBit rc=LeaveRC)
 
void mtfsb1 (FPSCRBit bit, RCBit rc=LeaveRC)
 
void mtfsfi (int bf, int immediate, RCBit rc=LeaveRC)
 
void mffs (const DoubleRegister frt, RCBit rc=LeaveRC)
 
void mtfsf (const DoubleRegister frb, bool L=1, int FLM=0, bool W=0, RCBit rc=LeaveRC)
 
void fsqrt (const DoubleRegister frt, const DoubleRegister frb, RCBit rc=LeaveRC)
 
void fabs (const DoubleRegister frt, const DoubleRegister frb, RCBit rc=LeaveRC)
 
void fmadd (const DoubleRegister frt, const DoubleRegister fra, const DoubleRegister frc, const DoubleRegister frb, RCBit rc=LeaveRC)
 
void fmsub (const DoubleRegister frt, const DoubleRegister fra, const DoubleRegister frc, const DoubleRegister frb, RCBit rc=LeaveRC)
 
void fcpsgn (const DoubleRegister frt, const DoubleRegister fra, const DoubleRegister frc, RCBit rc=LeaveRC)
 
void mfvsrd (const Register ra, const Simd128Register r)
 
void mfvsrwz (const Register ra, const Simd128Register r)
 
void mtvsrd (const Simd128Register rt, const Register ra)
 
void mtvsrdd (const Simd128Register rt, const Register ra, const Register rb)
 
void lxvd (const Simd128Register rt, const MemOperand &src)
 
void lxvx (const Simd128Register rt, const MemOperand &src)
 
void lxsdx (const Simd128Register rt, const MemOperand &src)
 
void lxsibzx (const Simd128Register rt, const MemOperand &src)
 
void lxsihzx (const Simd128Register rt, const MemOperand &src)
 
void lxsiwzx (const Simd128Register rt, const MemOperand &src)
 
void stxsdx (const Simd128Register rs, const MemOperand &dst)
 
void stxsibx (const Simd128Register rs, const MemOperand &dst)
 
void stxsihx (const Simd128Register rs, const MemOperand &dst)
 
void stxsiwx (const Simd128Register rs, const MemOperand &dst)
 
void stxvd (const Simd128Register rt, const MemOperand &dst)
 
void stxvx (const Simd128Register rt, const MemOperand &dst)
 
void xxspltib (const Simd128Register rt, const Operand &imm)
 
void paddi (Register dst, Register src, const Operand &imm)
 
void pli (Register dst, const Operand &imm)
 
void psubi (Register dst, Register src, const Operand &imm)
 
void plbz (Register dst, const MemOperand &src)
 
void plhz (Register dst, const MemOperand &src)
 
void plha (Register dst, const MemOperand &src)
 
void plwz (Register dst, const MemOperand &src)
 
void plwa (Register dst, const MemOperand &src)
 
void pld (Register dst, const MemOperand &src)
 
void plfs (DoubleRegister dst, const MemOperand &src)
 
void plfd (DoubleRegister dst, const MemOperand &src)
 
void pstb (Register src, const MemOperand &dst)
 
void psth (Register src, const MemOperand &dst)
 
void pstw (Register src, const MemOperand &dst)
 
void pstd (Register src, const MemOperand &dst)
 
void pstfs (const DoubleRegister src, const MemOperand &dst)
 
void pstfd (const DoubleRegister src, const MemOperand &dst)
 
void nop (int type=0)
 
void push (Register src)
 
void pop (Register dst)
 
void pop ()
 
void jmp (Label *L)
 
int SizeOfCodeGeneratedSince (Label *label)
 
int InstructionsGeneratedSince (Label *label)
 
void RecordDeoptReason (DeoptimizeReason reason, uint32_t node_id, SourcePosition position, int id)
 
void db (uint8_t data)
 
void dd (uint32_t data)
 
void dq (uint64_t data)
 
void dp (uintptr_t data)
 
Instr instr_at (int pos)
 
void instr_at_put (int pos, Instr instr)
 
void BlockTrampolinePoolFor (int instructions)
 
void CheckTrampolinePool ()
 
int instructions_required_for_mov (Register dst, const Operand &src) const
 
bool use_constant_pool_for_mov (Register dst, const Operand &src, bool canOptimize) const
 
void EnsureSpaceFor (int space_needed)
 
int EmitConstantPool ()
 
bool ConstantPoolAccessIsInOverflow () const
 
LabelConstantPoolPosition ()
 
void EmitRelocations ()
 
 Assembler (const AssemblerOptions &, std::unique_ptr< AssemblerBuffer >={})
 
 Assembler (const MaybeAssemblerZone &, const AssemblerOptions &options, std::unique_ptr< AssemblerBuffer > buffer={})
 
virtual ~Assembler ()
 
void AbortedCodeGeneration ()
 
void GetCode (LocalIsolate *isolate, CodeDesc *desc, SafepointTableBuilderBase *safepoint_table_builder, int handler_table_offset)
 
void GetCode (Isolate *isolate, CodeDesc *desc)
 
void GetCode (LocalIsolate *isolate, CodeDesc *desc)
 
void MaybeEmitOutOfLineConstantPool ()
 
void bind (Label *L)
 
bool is_near (Label *L)
 
bool is_near (Label *L, OffsetSize bits)
 
bool is_near_branch (Label *L)
 
int BranchOffset (Instr instr)
 
virtual int32_t branch_offset_helper (Label *L, OffsetSize bits)
 
uintptr_t jump_address (Label *L)
 
int32_t branch_long_offset (Label *L)
 
void label_at_put (Label *L, int at_offset)
 
Handle< Objectcode_target_object_handle_at (Address pc, Address constant_pool)
 
Handle< HeapObjectcompressed_embedded_object_handle_at (Address pc, Address constant_pool)
 
Handle< HeapObjectembedded_object_handle_at (Address pc)
 
void EmitPoolGuard ()
 
void FinishCode ()
 
RegListGetScratchRegisterList ()
 
DoubleRegListGetScratchDoubleRegisterList ()
 
void Align (int m)
 
void DataAlign (int m)
 
void CodeTargetAlign ()
 
void LoopHeaderAlign ()
 
void NOP ()
 
void EBREAK ()
 
void nop ()
 
void break_ (uint32_t code, bool break_as_stop=false)
 
void stop (uint32_t code=kMaxStopCode)
 
int SizeOfCodeGeneratedSince (Label *label)
 
int InstructionsGeneratedSince (Label *label)
 
void RecordDeoptReason (DeoptimizeReason reason, uint32_t node_id, SourcePosition position, int id)
 
void db (uint8_t data)
 
void dd (uint32_t data)
 
void dq (uint64_t data)
 
void dp (uintptr_t data)
 
void dd (Label *label)
 
Instructionpc () const
 
InstructionInstructionAt (ptrdiff_t offset) const
 
void BlockTrampolinePoolFor (int instructions)
 
bool overflow () const
 
intptr_t available_space () const
 
Instr instr_at (int pos)
 
void instr_at_put (int pos, Instr instr, WritableJitAllocation *jit_allocation=nullptr)
 
void instr_at_put (int pos, ShortInstr instr, WritableJitAllocation *jit_allocation=nullptr)
 
Address toAddress (int pos)
 
void CheckTrampolinePool ()
 
Handle< Coderelative_code_target_object_handle_at (Address pc_) const
 
int UnboundLabelsCount ()
 
void RecordConstPool (int size)
 
void ForceConstantPoolEmissionWithoutJump ()
 
void ForceConstantPoolEmissionWithJump ()
 
void EmitConstPoolWithJumpIfNeeded (size_t margin=0)
 
void EmitConstPoolWithoutJumpIfNeeded (size_t margin=0)
 
RelocInfoStatus RecordEntry (uint32_t data, RelocInfo::Mode rmode)
 
RelocInfoStatus RecordEntry (uint64_t data, RelocInfo::Mode rmode)
 
void CheckTrampolinePoolQuick (int extra_instructions=0)
 
int next_buffer_check ()
 
void ClearVectorunit ()
 
 Assembler (const AssemblerOptions &, std::unique_ptr< AssemblerBuffer >={})
 
 Assembler (const MaybeAssemblerZone &, const AssemblerOptions &options, std::unique_ptr< AssemblerBuffer > buffer={})
 
virtual ~Assembler ()
 
void GetCode (LocalIsolate *isolate, CodeDesc *desc, SafepointTableBuilderBase *safepoint_table_builder, int handler_table_offset)
 
void GetCode (Isolate *isolate, CodeDesc *desc)
 
void GetCode (LocalIsolate *isolate, CodeDesc *desc)
 
void MaybeEmitOutOfLineConstantPool ()
 
void bind (Label *L)
 
int link (Label *L)
 
int branch_offset (Label *L)
 
void load_label_offset (Register r1, Label *L)
 
Handle< Objectcode_target_object_handle_at (Address pc)
 
Handle< HeapObjectcompressed_embedded_object_handle_at (Address pc, Address constant_pool)
 
RegListGetScratchRegisterList ()
 
DoubleRegListGetScratchDoubleRegisterList ()
 
template<class T , int size, int lo, int hi>
T getfield (T value)
 
void ril_format (Opcode opcode, int f1, int f2)
 
void rr_format (Opcode opcode, int f1, int f2)
 
void rrd_format (Opcode opcode, int f1, int f2, int f3)
 
void rre_format (Opcode opcode, int f1, int f2)
 
void lzdr (DoubleRegister r1)
 
void lzer (DoubleRegister r1)
 
void rx_format (Opcode opcode, int f1, int f2, int f3, int f4)
 
void bc (Condition cond, const MemOperand &opnd)
 
void bc (Condition cond, Register x2, Register b2, const Operand &d2)
 
void rxy_format (Opcode opcode, int f1, int f2, int f3, int f4)
 
void pfd (Condition cond, const MemOperand &opnd)
 
void pfd (Condition cond, Register x2, Register b2, const Operand &d2)
 
void rsy_format (Opcode op, int f1, int f2, int f3, int f4)
 
void rs_format (Opcode op, int f1, int f2, int f3, const int f4)
 
void rxe_format (Opcode op, int f1, int f2, int f3, int f4, int f5=0)
 
void ri_format (Opcode opcode, int f1, int f2)
 
void rrf_format (Opcode op, int f1, int f2, int f3, int f4)
 
void rsi_format (Opcode op, int f1, int f2, int f3)
 
void rsl_format (Opcode op, uint16_t f1, int f2, int f3, int f4, int f5)
 
void s_format (Opcode op, int f1, int f2)
 
void si_format (Opcode op, int f1, int f2, int f3)
 
void siy_format (Opcode op, int f1, int f2, int f3)
 
void rrs_format (Opcode op, int f1, int f2, int f3, int f4, int f5)
 
void ris_format (Opcode op, int f1, int f2, int f3, int f4, int f5)
 
void sil_format (Opcode op, int f1, int f2, int f3)
 
void rie_d_format (Opcode opcode, int f1, int f2, int f3, int f4)
 
void rie_e_format (Opcode opcode, int f1, int f2, int f3)
 
void rie_f_format (Opcode opcode, int f1, int f2, int f3, int f4, int f5)
 
void ss_a_format (Opcode op, int f1, int f2, int f3, int f4, int f5)
 
void b (Register r, Label *l)
 
void branchOnCond (Condition c, int branch_offset, bool is_bound=false, bool force_long_branch=false)
 
void b (Condition cond, Label *l, Label::Distance dist=Label::kFar, bool force_long_branch=false)
 
void bc_short (Condition cond, Label *l, Label::Distance dist=Label::kFar)
 
void bc_long (Condition cond, Label *l)
 
void beq (Label *l, Label::Distance dist=Label::kFar)
 
void bne (Label *l, Label::Distance dist=Label::kFar)
 
void blt (Label *l, Label::Distance dist=Label::kFar)
 
void ble (Label *l, Label::Distance dist=Label::kFar)
 
void bgt (Label *l, Label::Distance dist=Label::kFar)
 
void bge (Label *l, Label::Distance dist=Label::kFar)
 
void b (Label *l, Label::Distance dist=Label::kFar)
 
void jmp (Label *l, Label::Distance dist=Label::kFar)
 
void bunordered (Label *l, Label::Distance dist=Label::kFar)
 
void bordered (Label *l, Label::Distance dist=Label::kFar)
 
void b (Condition cond, Register r)
 
void beq (Register r)
 
void bne (Register r)
 
void blt (Register r)
 
void ble (Register r)
 
void bgt (Register r)
 
void bge (Register r)
 
void b (Register r)
 
void jmp (Register r)
 
void bunordered (Register r)
 
void bordered (Register r)
 
void brxh (Register dst, Register inc, Label *L)
 
void brxhg (Register dst, Register inc, Label *L)
 
template<class R1 , class R2 >
void ledbr (R1 r1, R2 r2)
 
template<class R1 , class R2 >
void cdfbr (R1 r1, R2 r2)
 
template<class R1 , class R2 >
void cdgbr (R1 r1, R2 r2)
 
template<class R1 , class R2 >
void cegbr (R1 r1, R2 r2)
 
template<class R1 , class R2 >
void cgebr (Condition m3, R1 r1, R2 r2)
 
template<class R1 , class R2 >
void cgdbr (Condition m3, R1 r1, R2 r2)
 
template<class R1 , class R2 >
void cfdbr (Condition m3, R1 r1, R2 r2)
 
template<class R1 , class R2 >
void cfebr (Condition m3, R1 r1, R2 r2)
 
void Align (int m)
 
void DataAlign (int m)
 
void CodeTargetAlign ()
 
void LoopHeaderAlign ()
 
void breakpoint (bool do_print)
 
void call (Handle< Code > target, RelocInfo::Mode rmode)
 
void jump (Handle< Code > target, RelocInfo::Mode rmode, Condition cond)
 
void vfa (DoubleRegister v1, DoubleRegister v2, DoubleRegister v3)
 
void vfs (DoubleRegister v1, DoubleRegister v2, DoubleRegister v3)
 
void vfm (DoubleRegister v1, DoubleRegister v2, DoubleRegister v3)
 
void vfd (DoubleRegister v1, DoubleRegister v2, DoubleRegister v3)
 
void larl (Register r, Label *l)
 
void lgrl (Register r, Label *l)
 
void stop (Condition cond=al, int32_t code=kDefaultStopCode, CRegister cr=cr7)
 
void bkpt (uint32_t imm16)
 
void nop (int type=0)
 
void dumy (int r1, int x2, int b2, int d2)
 
int SizeOfCodeGeneratedSince (Label *label)
 
void RecordDeoptReason (DeoptimizeReason reason, uint32_t node_id, SourcePosition position, int id)
 
void db (uint8_t data)
 
void dh (uint16_t data)
 
void dd (uint32_t data)
 
void dq (uint64_t data)
 
void dp (uintptr_t data)
 
SixByteInstr instr_at (int pos)
 
template<typename T >
void instr_at_put (int pos, T instr)
 
int32_t instr_length_at (int pos)
 
void EnsureSpaceFor (int space_needed)
 
void EmitRelocations ()
 
void emit_label_addr (Label *label)
 
uint8_t * buffer_pos () const
 
 Assembler (const AssemblerOptions &, std::unique_ptr< AssemblerBuffer >={})
 
 Assembler (const MaybeAssemblerZone &, const AssemblerOptions &options, std::unique_ptr< AssemblerBuffer > buffer={})
 
 ~Assembler () override=default
 
void GetCode (LocalIsolate *isolate, CodeDesc *desc, SafepointTableBuilderBase *safepoint_table_builder, int handler_table_offset)
 
void GetCode (Isolate *isolate, CodeDesc *desc)
 
void GetCode (LocalIsolate *isolate, CodeDesc *desc)
 
void FinalizeJumpOptimizationInfo ()
 
void MaybeEmitOutOfLineConstantPool ()
 
DirectHandle< Codecode_target_object_handle_at (Address pc)
 
DirectHandle< HeapObjectcompressed_embedded_object_handle_at (Address pc)
 
void Align (int m)
 
void DataAlign (int m)
 
void Nop (int bytes=1)
 
void AlignForJCCErratum (int inst_size)
 
void emit_trace_instruction (Immediate markid)
 
void CodeTargetAlign ()
 
void LoopHeaderAlign ()
 
void pushfq ()
 
void popfq ()
 
void pushq (Immediate value)
 
void pushq_imm32 (int32_t imm32)
 
void pushq (Register src)
 
void pushq (Operand src)
 
void popq (Register dst)
 
void popq (Operand dst)
 
void incsspq (Register number_of_words)
 
void leave ()
 
void movb (Register dst, Operand src)
 
void movb (Register dst, Immediate imm)
 
void movb (Operand dst, Register src)
 
void movb (Operand dst, Immediate imm)
 
void movw (Register dst, Operand src)
 
void movw (Operand dst, Register src)
 
void movw (Operand dst, Immediate imm)
 
void movl (Operand dst, Label *src)
 
void movq_heap_number (Register dst, double value)
 
void movq (Register dst, int64_t value)
 
void movq (Register dst, uint64_t value)
 
void movq_imm64 (Register dst, int64_t value)
 
void movsxbl (Register dst, Register src)
 
void movsxbl (Register dst, Operand src)
 
void movsxbq (Register dst, Register src)
 
void movsxbq (Register dst, Operand src)
 
void movsxwl (Register dst, Register src)
 
void movsxwl (Register dst, Operand src)
 
void movsxwq (Register dst, Register src)
 
void movsxwq (Register dst, Operand src)
 
void movsxlq (Register dst, Register src)
 
void movsxlq (Register dst, Operand src)
 
void repmovsb ()
 
void repmovsw ()
 
void repmovsl ()
 
void repmovsq ()
 
void repstosl ()
 
void repstosq ()
 
void load_rax (Address value, RelocInfo::Mode rmode)
 
void load_rax (ExternalReference ext)
 
void cmovq (Condition cc, Register dst, Register src)
 
void cmovq (Condition cc, Register dst, Operand src)
 
void cmovl (Condition cc, Register dst, Register src)
 
void cmovl (Condition cc, Register dst, Operand src)
 
void cmpb (Register dst, Immediate src)
 
void aligned_cmpb (Register dst, Immediate src)
 
void cmpb_al (Immediate src)
 
void cmpb (Register dst, Register src)
 
void aligned_cmpb (Register dst, Register src)
 
void cmpb (Register dst, Operand src)
 
void aligned_cmpb (Register dst, Operand src)
 
void cmpb (Operand dst, Register src)
 
void aligned_cmpb (Operand dst, Register src)
 
void cmpb (Operand dst, Immediate src)
 
void aligned_cmpb (Operand dst, Immediate src)
 
void cmpw (Operand dst, Immediate src)
 
void aligned_cmpw (Operand dst, Immediate src)
 
void cmpw (Register dst, Immediate src)
 
void aligned_cmpw (Register dst, Immediate src)
 
void cmpw (Register dst, Operand src)
 
void aligned_cmpw (Register dst, Operand src)
 
void cmpw (Register dst, Register src)
 
void aligned_cmpw (Register dst, Register src)
 
void cmpw (Operand dst, Register src)
 
void aligned_cmpw (Operand dst, Register src)
 
void testb (Register reg, Operand op)
 
void aligned_testb (Register reg, Operand op)
 
void testw (Register reg, Operand op)
 
void aligned_testw (Register reg, Operand op)
 
void andb (Register dst, Immediate src)
 
void decb (Register dst)
 
void decb (Operand dst)
 
void lock ()
 
void xchgb (Register reg, Operand op)
 
void xchgw (Register reg, Operand op)
 
void xaddb (Operand dst, Register src)
 
void xaddw (Operand dst, Register src)
 
void xaddl (Operand dst, Register src)
 
void xaddq (Operand dst, Register src)
 
void negb (Register reg)
 
void negw (Register reg)
 
void negl (Register reg)
 
void negq (Register reg)
 
void negb (Operand op)
 
void negw (Operand op)
 
void negl (Operand op)
 
void negq (Operand op)
 
void cmpxchgb (Operand dst, Register src)
 
void cmpxchgw (Operand dst, Register src)
 
void cqo ()
 
void cdq ()
 
void mull (Register src)
 
void mull (Operand src)
 
void mulq (Register src)
 
void mulq (Operand src)
 
void shld (Register dst, Register src)
 
void shrd (Register dst, Register src)
 
void store_rax (Address dst, RelocInfo::Mode mode)
 
void store_rax (ExternalReference ref)
 
void subb (Register dst, Immediate src)
 
void sub_sp_32 (uint32_t imm)
 
void testb (Register dst, Register src)
 
void aligned_testb (Register dst, Register src)
 
void testb (Register reg, Immediate mask)
 
void aligned_testb (Register reg, Immediate mask)
 
void testb (Operand op, Immediate mask)
 
void aligned_testb (Operand op, Immediate mask)
 
void testb (Operand op, Register reg)
 
void aligned_testb (Operand op, Register reg)
 
void testw (Register dst, Register src)
 
void aligned_testw (Register dst, Register src)
 
void testw (Register reg, Immediate mask)
 
void aligned_testw (Register reg, Immediate mask)
 
void testw (Operand op, Immediate mask)
 
void aligned_testw (Operand op, Immediate mask)
 
void testw (Operand op, Register reg)
 
void aligned_testw (Operand op, Register reg)
 
void bswapl (Register dst)
 
void bswapq (Register dst)
 
void btq (Operand dst, Register src)
 
void btsq (Operand dst, Register src)
 
void btsq (Register dst, Immediate imm8)
 
void btrq (Register dst, Immediate imm8)
 
void bsrq (Register dst, Register src)
 
void bsrq (Register dst, Operand src)
 
void bsrl (Register dst, Register src)
 
void bsrl (Register dst, Operand src)
 
void bsfq (Register dst, Register src)
 
void bsfq (Register dst, Operand src)
 
void bsfl (Register dst, Register src)
 
void bsfl (Register dst, Operand src)
 
void clc ()
 
void cld ()
 
void cpuid ()
 
void hlt ()
 
void int3 ()
 
void nop ()
 
void ret (int imm16)
 
void ud2 ()
 
void setcc (Condition cc, Register reg)
 
void endbr64 ()
 
void pblendw (XMMRegister dst, Operand src, uint8_t mask)
 
void pblendw (XMMRegister dst, XMMRegister src, uint8_t mask)
 
void palignr (XMMRegister dst, Operand src, uint8_t mask)
 
void palignr (XMMRegister dst, XMMRegister src, uint8_t mask)
 
void vpermq (YMMRegister dst, Operand src, uint8_t imm8)
 
void vpermq (YMMRegister dst, YMMRegister src, uint8_t imm8)
 
void bind (Label *L)
 
void call (Label *L)
 
void near_call (intptr_t disp, RelocInfo::Mode rmode)
 
void near_call (Builtin buitin, RelocInfo::Mode rmode)
 
void near_jmp (intptr_t disp, RelocInfo::Mode rmode)
 
void near_j (Condition cc, intptr_t disp, RelocInfo::Mode rmode)
 
void call (Handle< Code > target, RelocInfo::Mode rmode=RelocInfo::CODE_TARGET)
 
void call (Register adr)
 
void jmp (Label *L, Label::Distance distance=Label::kFar)
 
void aligned_jmp (Label *L, Label::Distance distance=Label::kFar)
 
void jmp (Handle< Code > target, RelocInfo::Mode rmode)
 
void jmp (Register adr, bool notrack=false)
 
void jmp (Operand src, bool notrack=false)
 
void jmp_rel (int offset)
 
void j (Condition cc, Label *L, Label::Distance distance=Label::kFar)
 
void aligned_j (Condition cc, Label *L, Label::Distance distance=Label::kFar)
 
void j (Condition cc, Address entry, RelocInfo::Mode rmode)
 
void j (Condition cc, Handle< Code > target, RelocInfo::Mode rmode)
 
void fld (int i)
 
void fld1 ()
 
void fldz ()
 
void fldpi ()
 
void fldln2 ()
 
void fld_s (Operand adr)
 
void fld_d (Operand adr)
 
void fstp_s (Operand adr)
 
void fstp_d (Operand adr)
 
void fstp (int index)
 
void fild_s (Operand adr)
 
void fild_d (Operand adr)
 
void fist_s (Operand adr)
 
void fistp_s (Operand adr)
 
void fistp_d (Operand adr)
 
void fisttp_s (Operand adr)
 
void fisttp_d (Operand adr)
 
void fabs ()
 
void fchs ()
 
void fadd (int i)
 
void fsub (int i)
 
void fmul (int i)
 
void fdiv (int i)
 
void fisub_s (Operand adr)
 
void faddp (int i=1)
 
void fsubp (int i=1)
 
void fsubrp (int i=1)
 
void fmulp (int i=1)
 
void fdivp (int i=1)
 
void fprem ()
 
void fprem1 ()
 
void fxch (int i=1)
 
void fincstp ()
 
void ffree (int i=0)
 
void ftst ()
 
void fucomp (int i)
 
void fucompp ()
 
void fucomi (int i)
 
void fucomip ()
 
void fcompp ()
 
void fnstsw_ax ()
 
void fwait ()
 
void fnclex ()
 
void fsin ()
 
void fcos ()
 
void fptan ()
 
void fyl2x ()
 
void f2xm1 ()
 
void fscale ()
 
void fninit ()
 
void frndint ()
 
void sahf ()
 
void ucomiss (XMMRegister dst, XMMRegister src)
 
void ucomiss (XMMRegister dst, Operand src)
 
void movaps (XMMRegister dst, XMMRegister src)
 
void movaps (XMMRegister dst, Operand src)
 
void movss (XMMRegister dst, XMMRegister src)
 
void movss (XMMRegister dst, Operand src)
 
void movss (Operand dst, XMMRegister src)
 
void movlps (XMMRegister dst, Operand src)
 
void movlps (Operand dst, XMMRegister src)
 
void movhps (XMMRegister dst, Operand src)
 
void movhps (Operand dst, XMMRegister src)
 
void shufps (XMMRegister dst, XMMRegister src, uint8_t imm8)
 
void cvttss2si (Register dst, Operand src)
 
void cvttss2si (Register dst, XMMRegister src)
 
void cvtlsi2ss (XMMRegister dst, Operand src)
 
void cvtlsi2ss (XMMRegister dst, Register src)
 
void movmskps (Register dst, XMMRegister src)
 
void vinstr (uint8_t op, XMMRegister dst, XMMRegister src1, XMMRegister src2, SIMDPrefix pp, LeadingOpcode m, VexW w, CpuFeature feature=AVX)
 
void vinstr (uint8_t op, XMMRegister dst, XMMRegister src1, Operand src2, SIMDPrefix pp, LeadingOpcode m, VexW w, CpuFeature feature=AVX)
 
template<typename Reg1 , typename Reg2 , typename Op >
void vinstr (uint8_t op, Reg1 dst, Reg2 src1, Op src2, SIMDPrefix pp, LeadingOpcode m, VexW w, CpuFeature feature=AVX2)
 
void sse_instr (XMMRegister dst, XMMRegister src, uint8_t escape, uint8_t opcode)
 
void sse_instr (XMMRegister dst, Operand src, uint8_t escape, uint8_t opcode)
 
void sse2_instr (XMMRegister dst, XMMRegister src, uint8_t prefix, uint8_t escape, uint8_t opcode)
 
void sse2_instr (XMMRegister dst, Operand src, uint8_t prefix, uint8_t escape, uint8_t opcode)
 
void sse2_instr (XMMRegister reg, uint8_t imm8, uint8_t prefix, uint8_t escape, uint8_t opcode, int extension)
 
 DECLARE_SSE2_UNOP_AVX_YMM_INSTRUCTION (sqrtpd, 51, YMMRegister, YMMRegister, Operand) DECLARE_SSE2_UNOP_AVX_YMM_INSTRUCTION(cvtpd2ps
 
Operand256 DECLARE_SSE2_UNOP_AVX_YMM_INSTRUCTION (cvtps2dq, 5B, YMMRegister, YMMRegister, Operand) DECLARE_SSE2_UNOP_AVX_YMM_INSTRUCTION(cvttpd2dq
 
Operand256 Operand256 void lddqu (XMMRegister dst, Operand src)
 
void movddup (XMMRegister dst, Operand src)
 
void movddup (XMMRegister dst, XMMRegister src)
 
void movshdup (XMMRegister dst, XMMRegister src)
 
void ssse3_instr (XMMRegister dst, XMMRegister src, uint8_t prefix, uint8_t escape1, uint8_t escape2, uint8_t opcode)
 
void ssse3_instr (XMMRegister dst, Operand src, uint8_t prefix, uint8_t escape1, uint8_t escape2, uint8_t opcode)
 
void sse4_instr (Register dst, XMMRegister src, uint8_t prefix, uint8_t escape1, uint8_t escape2, uint8_t opcode, int8_t imm8)
 
void sse4_instr (Operand dst, XMMRegister src, uint8_t prefix, uint8_t escape1, uint8_t escape2, uint8_t opcode, int8_t imm8)
 
void sse4_instr (XMMRegister dst, Register src, uint8_t prefix, uint8_t escape1, uint8_t escape2, uint8_t opcode, int8_t imm8)
 
void sse4_instr (XMMRegister dst, XMMRegister src, uint8_t prefix, uint8_t escape1, uint8_t escape2, uint8_t opcode)
 
void sse4_instr (XMMRegister dst, Operand src, uint8_t prefix, uint8_t escape1, uint8_t escape2, uint8_t opcode)
 
void sse4_2_instr (XMMRegister dst, XMMRegister src, uint8_t prefix, uint8_t escape1, uint8_t escape2, uint8_t opcode)
 
void sse4_2_instr (XMMRegister dst, Operand src, uint8_t prefix, uint8_t escape1, uint8_t escape2, uint8_t opcode)
 
void vpblendvb (XMMRegister dst, XMMRegister src1, XMMRegister src2, XMMRegister mask)
 
void vpblendvb (YMMRegister dst, YMMRegister src1, YMMRegister src2, YMMRegister mask)
 
void vblendvps (XMMRegister dst, XMMRegister src1, XMMRegister src2, XMMRegister mask)
 
void vblendvps (YMMRegister dst, YMMRegister src1, YMMRegister src2, YMMRegister mask)
 
void vblendvpd (XMMRegister dst, XMMRegister src1, XMMRegister src2, XMMRegister mask)
 
void vblendvpd (YMMRegister dst, YMMRegister src1, YMMRegister src2, YMMRegister mask)
 
void vptest (YMMRegister dst, YMMRegister src)
 
void vptest (YMMRegister dst, Operand src)
 
void movd (XMMRegister dst, Register src)
 
void movd (XMMRegister dst, Operand src)
 
void movd (Register dst, XMMRegister src)
 
void movq (XMMRegister dst, Register src)
 
void movq (XMMRegister dst, Operand src)
 
void movq (Register dst, XMMRegister src)
 
void movq (XMMRegister dst, XMMRegister src)
 
void movsd (XMMRegister dst, XMMRegister src)
 
void movsd (Operand dst, XMMRegister src)
 
void movsd (XMMRegister dst, Operand src)
 
void movdqa (Operand dst, XMMRegister src)
 
void movdqa (XMMRegister dst, Operand src)
 
void movdqa (XMMRegister dst, XMMRegister src)
 
void movdqu (Operand dst, XMMRegister src)
 
void movdqu (XMMRegister dst, Operand src)
 
void movdqu (XMMRegister dst, XMMRegister src)
 
void movapd (XMMRegister dst, XMMRegister src)
 
void movupd (XMMRegister dst, Operand src)
 
void movupd (Operand dst, XMMRegister src)
 
void cvtdq2pd (XMMRegister dst, XMMRegister src)
 
void cvttsd2si (Register dst, Operand src)
 
void cvttsd2si (Register dst, XMMRegister src)
 
void cvttss2siq (Register dst, XMMRegister src)
 
void cvttss2siq (Register dst, Operand src)
 
void cvttsd2siq (Register dst, XMMRegister src)
 
void cvttsd2siq (Register dst, Operand src)
 
void cvttps2dq (XMMRegister dst, Operand src)
 
void cvttps2dq (XMMRegister dst, XMMRegister src)
 
void cvtlsi2sd (XMMRegister dst, Operand src)
 
void cvtlsi2sd (XMMRegister dst, Register src)
 
void cvtqsi2ss (XMMRegister dst, Operand src)
 
void cvtqsi2ss (XMMRegister dst, Register src)
 
void cvtqsi2sd (XMMRegister dst, Operand src)
 
void cvtqsi2sd (XMMRegister dst, Register src)
 
void cvtsd2si (Register dst, XMMRegister src)
 
void cvtsd2siq (Register dst, XMMRegister src)
 
void haddps (XMMRegister dst, XMMRegister src)
 
void haddps (XMMRegister dst, Operand src)
 
void cmpeqsd (XMMRegister dst, XMMRegister src)
 
void cmpeqss (XMMRegister dst, XMMRegister src)
 
void cmpltsd (XMMRegister dst, XMMRegister src)
 
void movmskpd (Register dst, XMMRegister src)
 
void pmovmskb (Register dst, XMMRegister src)
 
void pinsrw (XMMRegister dst, Register src, uint8_t imm8)
 
void pinsrw (XMMRegister dst, Operand src, uint8_t imm8)
 
void insertps (XMMRegister dst, XMMRegister src, uint8_t imm8)
 
void insertps (XMMRegister dst, Operand src, uint8_t imm8)
 
void pextrq (Register dst, XMMRegister src, int8_t imm8)
 
void pinsrb (XMMRegister dst, Register src, uint8_t imm8)
 
void pinsrb (XMMRegister dst, Operand src, uint8_t imm8)
 
void pinsrd (XMMRegister dst, Register src, uint8_t imm8)
 
void pinsrd (XMMRegister dst, Operand src, uint8_t imm8)
 
void pinsrq (XMMRegister dst, Register src, uint8_t imm8)
 
void pinsrq (XMMRegister dst, Operand src, uint8_t imm8)
 
void roundss (XMMRegister dst, XMMRegister src, RoundingMode mode)
 
void roundss (XMMRegister dst, Operand src, RoundingMode mode)
 
void roundsd (XMMRegister dst, XMMRegister src, RoundingMode mode)
 
void roundsd (XMMRegister dst, Operand src, RoundingMode mode)
 
void roundps (XMMRegister dst, XMMRegister src, RoundingMode mode)
 
void roundpd (XMMRegister dst, XMMRegister src, RoundingMode mode)
 
void cmpps (XMMRegister dst, XMMRegister src, int8_t cmp)
 
void cmpps (XMMRegister dst, Operand src, int8_t cmp)
 
void cmppd (XMMRegister dst, XMMRegister src, int8_t cmp)
 
void cmppd (XMMRegister dst, Operand src, int8_t cmp)
 
void movups (XMMRegister dst, XMMRegister src)
 
void movups (XMMRegister dst, Operand src)
 
void movups (Operand dst, XMMRegister src)
 
void psrldq (XMMRegister dst, uint8_t shift)
 
void pshufd (XMMRegister dst, XMMRegister src, uint8_t shuffle)
 
void pshufd (XMMRegister dst, Operand src, uint8_t shuffle)
 
void pshufhw (XMMRegister dst, XMMRegister src, uint8_t shuffle)
 
void pshufhw (XMMRegister dst, Operand src, uint8_t shuffle)
 
void pshuflw (XMMRegister dst, XMMRegister src, uint8_t shuffle)
 
void pshuflw (XMMRegister dst, Operand src, uint8_t shuffle)
 
void movhlps (XMMRegister dst, XMMRegister src)
 
void movlhps (XMMRegister dst, XMMRegister src)
 
void vmovddup (XMMRegister dst, XMMRegister src)
 
void vmovddup (XMMRegister dst, Operand src)
 
void vmovddup (YMMRegister dst, YMMRegister src)
 
void vmovddup (YMMRegister dst, Operand src)
 
void vmovshdup (XMMRegister dst, XMMRegister src)
 
void vmovshdup (YMMRegister dst, YMMRegister src)
 
void vbroadcastss (XMMRegister dst, Operand src)
 
void vbroadcastss (XMMRegister dst, XMMRegister src)
 
void vbroadcastss (YMMRegister dst, Operand src)
 
void vbroadcastss (YMMRegister dst, XMMRegister src)
 
void vbroadcastsd (YMMRegister dst, XMMRegister src)
 
void vbroadcastsd (YMMRegister dst, Operand src)
 
void vinserti128 (YMMRegister dst, YMMRegister src1, XMMRegister src2, uint8_t lane)
 
void vperm2f128 (YMMRegister dst, YMMRegister src1, YMMRegister src2, uint8_t lane)
 
void vextractf128 (XMMRegister dst, YMMRegister src, uint8_t lane)
 
template<typename Reg1 , typename Reg2 , typename Op >
void fma_instr (uint8_t op, Reg1 dst, Reg2 src1, Op src2, VectorLength l, SIMDPrefix pp, LeadingOpcode m, VexW w)
 
void vmovd (XMMRegister dst, Register src)
 
void vmovd (XMMRegister dst, Operand src)
 
void vmovd (Register dst, XMMRegister src)
 
void vmovq (XMMRegister dst, Register src)
 
void vmovq (XMMRegister dst, Operand src)
 
void vmovq (Register dst, XMMRegister src)
 
void vmovsd (XMMRegister dst, XMMRegister src1, XMMRegister src2)
 
void vmovsd (XMMRegister dst, Operand src)
 
void vmovsd (Operand dst, XMMRegister src)
 
void vmovdqa (XMMRegister dst, Operand src)
 
void vmovdqa (XMMRegister dst, XMMRegister src)
 
void vmovdqa (YMMRegister dst, Operand src)
 
void vmovdqa (YMMRegister dst, YMMRegister src)
 
void vmovdqu (XMMRegister dst, Operand src)
 
void vmovdqu (Operand dst, XMMRegister src)
 
void vmovdqu (XMMRegister dst, XMMRegister src)
 
void vmovdqu (YMMRegister dst, Operand src)
 
void vmovdqu (Operand dst, YMMRegister src)
 
void vmovdqu (YMMRegister dst, YMMRegister src)
 
void vmovlps (XMMRegister dst, XMMRegister src1, Operand src2)
 
void vmovlps (Operand dst, XMMRegister src)
 
void vmovhps (XMMRegister dst, XMMRegister src1, Operand src2)
 
void vmovhps (Operand dst, XMMRegister src)
 
void vmovlhps (XMMRegister dst, XMMRegister src1, XMMRegister src2)
 
void vmovhlps (XMMRegister dst, XMMRegister src1, XMMRegister src2)
 
void vcvtdq2pd (XMMRegister dst, XMMRegister src)
 
void vcvtdq2pd (YMMRegister dst, XMMRegister src)
 
void vcvtdq2pd (YMMRegister dst, Operand src)
 
void vcvttps2dq (XMMRegister dst, XMMRegister src)
 
void vcvttps2dq (YMMRegister dst, YMMRegister src)
 
void vcvttps2dq (YMMRegister dst, Operand src)
 
void vcvtlsi2sd (XMMRegister dst, XMMRegister src1, Register src2)
 
void vcvtlsi2sd (XMMRegister dst, XMMRegister src1, Operand src2)
 
void vcvtlsi2ss (XMMRegister dst, XMMRegister src1, Register src2)
 
void vcvtlsi2ss (XMMRegister dst, XMMRegister src1, Operand src2)
 
void vcvtqsi2ss (XMMRegister dst, XMMRegister src1, Register src2)
 
void vcvtqsi2ss (XMMRegister dst, XMMRegister src1, Operand src2)
 
void vcvtqsi2sd (XMMRegister dst, XMMRegister src1, Register src2)
 
void vcvtqsi2sd (XMMRegister dst, XMMRegister src1, Operand src2)
 
void vcvttss2si (Register dst, XMMRegister src)
 
void vcvttss2si (Register dst, Operand src)
 
void vcvttsd2si (Register dst, XMMRegister src)
 
void vcvttsd2si (Register dst, Operand src)
 
void vcvttss2siq (Register dst, XMMRegister src)
 
void vcvttss2siq (Register dst, Operand src)
 
void vcvttsd2siq (Register dst, XMMRegister src)
 
void vcvttsd2siq (Register dst, Operand src)
 
void vcvtsd2si (Register dst, XMMRegister src)
 
void vroundss (XMMRegister dst, XMMRegister src1, XMMRegister src2, RoundingMode mode)
 
void vroundss (XMMRegister dst, XMMRegister src1, Operand src2, RoundingMode mode)
 
void vroundsd (XMMRegister dst, XMMRegister src1, XMMRegister src2, RoundingMode mode)
 
void vroundsd (XMMRegister dst, XMMRegister src1, Operand src2, RoundingMode mode)
 
void vroundps (XMMRegister dst, XMMRegister src, RoundingMode mode)
 
void vroundps (YMMRegister dst, YMMRegister src, RoundingMode mode)
 
void vroundpd (XMMRegister dst, XMMRegister src, RoundingMode mode)
 
void vroundpd (YMMRegister dst, YMMRegister src, RoundingMode mode)
 
template<typename Reg , typename Op >
void vsd (uint8_t op, Reg dst, Reg src1, Op src2)
 
void vmovss (XMMRegister dst, XMMRegister src1, XMMRegister src2)
 
void vmovss (XMMRegister dst, Operand src)
 
void vmovss (Operand dst, XMMRegister src)
 
void vucomiss (XMMRegister dst, XMMRegister src)
 
void vucomiss (XMMRegister dst, Operand src)
 
void vss (uint8_t op, XMMRegister dst, XMMRegister src1, XMMRegister src2)
 
void vss (uint8_t op, XMMRegister dst, XMMRegister src1, Operand src2)
 
void vshufps (XMMRegister dst, XMMRegister src1, XMMRegister src2, uint8_t imm8)
 
void vshufps (YMMRegister dst, YMMRegister src1, YMMRegister src2, uint8_t imm8)
 
void vmovaps (XMMRegister dst, XMMRegister src)
 
void vmovaps (YMMRegister dst, YMMRegister src)
 
void vmovaps (XMMRegister dst, Operand src)
 
void vmovaps (YMMRegister dst, Operand src)
 
void vmovups (XMMRegister dst, XMMRegister src)
 
void vmovups (YMMRegister dst, YMMRegister src)
 
void vmovups (XMMRegister dst, Operand src)
 
void vmovups (YMMRegister dst, Operand src)
 
void vmovups (Operand dst, XMMRegister src)
 
void vmovups (Operand dst, YMMRegister src)
 
void vmovapd (XMMRegister dst, XMMRegister src)
 
void vmovapd (YMMRegister dst, YMMRegister src)
 
void vmovupd (XMMRegister dst, Operand src)
 
void vmovupd (YMMRegister dst, Operand src)
 
void vmovupd (Operand dst, XMMRegister src)
 
void vmovupd (Operand dst, YMMRegister src)
 
void vmovmskps (Register dst, XMMRegister src)
 
void vmovmskpd (Register dst, XMMRegister src)
 
void vpmovmskb (Register dst, XMMRegister src)
 
void vcmpeqss (XMMRegister dst, XMMRegister src)
 
void vcmpeqsd (XMMRegister dst, XMMRegister src)
 
void vcmpps (XMMRegister dst, XMMRegister src1, XMMRegister src2, int8_t cmp)
 
void vcmpps (YMMRegister dst, YMMRegister src1, YMMRegister src2, int8_t cmp)
 
void vcmpps (XMMRegister dst, XMMRegister src1, Operand src2, int8_t cmp)
 
void vcmpps (YMMRegister dst, YMMRegister src1, Operand src2, int8_t cmp)
 
void vcmppd (XMMRegister dst, XMMRegister src1, XMMRegister src2, int8_t cmp)
 
void vcmppd (YMMRegister dst, YMMRegister src1, YMMRegister src2, int8_t cmp)
 
void vcmppd (XMMRegister dst, XMMRegister src1, Operand src2, int8_t cmp)
 
void vcmppd (YMMRegister dst, YMMRegister src1, Operand src2, int8_t cmp)
 
void vlddqu (XMMRegister dst, Operand src)
 
void vinsertps (XMMRegister dst, XMMRegister src1, XMMRegister src2, uint8_t imm8)
 
void vinsertps (XMMRegister dst, XMMRegister src1, Operand src2, uint8_t imm8)
 
void vpextrq (Register dst, XMMRegister src, int8_t imm8)
 
void vpinsrb (XMMRegister dst, XMMRegister src1, Register src2, uint8_t imm8)
 
void vpinsrb (XMMRegister dst, XMMRegister src1, Operand src2, uint8_t imm8)
 
void vpinsrw (XMMRegister dst, XMMRegister src1, Register src2, uint8_t imm8)
 
void vpinsrw (XMMRegister dst, XMMRegister src1, Operand src2, uint8_t imm8)
 
void vpinsrd (XMMRegister dst, XMMRegister src1, Register src2, uint8_t imm8)
 
void vpinsrd (XMMRegister dst, XMMRegister src1, Operand src2, uint8_t imm8)
 
void vpinsrq (XMMRegister dst, XMMRegister src1, Register src2, uint8_t imm8)
 
void vpinsrq (XMMRegister dst, XMMRegister src1, Operand src2, uint8_t imm8)
 
void vpshufd (XMMRegister dst, XMMRegister src, uint8_t imm8)
 
void vpshufd (YMMRegister dst, YMMRegister src, uint8_t imm8)
 
void vpshufd (XMMRegister dst, Operand src, uint8_t imm8)
 
void vpshufd (YMMRegister dst, Operand src, uint8_t imm8)
 
void vpshuflw (XMMRegister dst, XMMRegister src, uint8_t imm8)
 
void vpshuflw (YMMRegister dst, YMMRegister src, uint8_t imm8)
 
void vpshuflw (XMMRegister dst, Operand src, uint8_t imm8)
 
void vpshuflw (YMMRegister dst, Operand src, uint8_t imm8)
 
void vpshufhw (XMMRegister dst, XMMRegister src, uint8_t imm8)
 
void vpshufhw (YMMRegister dst, YMMRegister src, uint8_t imm8)
 
void vpshufhw (XMMRegister dst, Operand src, uint8_t imm8)
 
void vpshufhw (YMMRegister dst, Operand src, uint8_t imm8)
 
void vpblendw (XMMRegister dst, XMMRegister src1, XMMRegister src2, uint8_t mask)
 
void vpblendw (YMMRegister dst, YMMRegister src1, YMMRegister src2, uint8_t mask)
 
void vpblendw (XMMRegister dst, XMMRegister src1, Operand src2, uint8_t mask)
 
void vpblendw (YMMRegister dst, YMMRegister src1, Operand src2, uint8_t mask)
 
void vpalignr (XMMRegister dst, XMMRegister src1, XMMRegister src2, uint8_t imm8)
 
void vpalignr (YMMRegister dst, YMMRegister src1, YMMRegister src2, uint8_t imm8)
 
void vpalignr (XMMRegister dst, XMMRegister src1, Operand src2, uint8_t imm8)
 
void vpalignr (YMMRegister dst, YMMRegister src1, Operand src2, uint8_t imm8)
 
void vps (uint8_t op, XMMRegister dst, XMMRegister src1, XMMRegister src2)
 
void vps (uint8_t op, YMMRegister dst, YMMRegister src1, YMMRegister src2)
 
void vps (uint8_t op, XMMRegister dst, XMMRegister src1, Operand src2)
 
void vps (uint8_t op, YMMRegister dst, YMMRegister src1, Operand src2)
 
void vps (uint8_t op, XMMRegister dst, XMMRegister src1, XMMRegister src2, uint8_t imm8)
 
void vps (uint8_t op, YMMRegister dst, YMMRegister src1, YMMRegister src2, uint8_t imm8)
 
void vpd (uint8_t op, XMMRegister dst, XMMRegister src1, XMMRegister src2)
 
void vpd (uint8_t op, YMMRegister dst, YMMRegister src1, YMMRegister src2)
 
void vpd (uint8_t op, XMMRegister dst, YMMRegister src1, YMMRegister src2)
 
void vpd (uint8_t op, XMMRegister dst, XMMRegister src1, Operand src2)
 
void vpd (uint8_t op, YMMRegister dst, YMMRegister src1, Operand src2)
 
void vpd (uint8_t op, XMMRegister dst, YMMRegister src1, Operand src2)
 
void vcvtph2ps (XMMRegister dst, XMMRegister src)
 
void vcvtph2ps (YMMRegister dst, XMMRegister src)
 
void vcvtps2ph (XMMRegister dst, XMMRegister src, uint8_t imm8)
 
void vcvtps2ph (XMMRegister dst, YMMRegister src, uint8_t imm8)
 
void vpdpbusd (XMMRegister dst, XMMRegister src1, XMMRegister src2)
 
void vpdpbusd (YMMRegister dst, YMMRegister src1, YMMRegister src2)
 
void vpdpbssd (XMMRegister dst, XMMRegister src1, XMMRegister src2)
 
void vpdpbssd (YMMRegister dst, YMMRegister src1, YMMRegister src2)
 
void andnq (Register dst, Register src1, Register src2)
 
void andnq (Register dst, Register src1, Operand src2)
 
void andnl (Register dst, Register src1, Register src2)
 
void andnl (Register dst, Register src1, Operand src2)
 
void bextrq (Register dst, Register src1, Register src2)
 
void bextrq (Register dst, Operand src1, Register src2)
 
void bextrl (Register dst, Register src1, Register src2)
 
void bextrl (Register dst, Operand src1, Register src2)
 
void blsiq (Register dst, Register src)
 
void blsiq (Register dst, Operand src)
 
void blsil (Register dst, Register src)
 
void blsil (Register dst, Operand src)
 
void blsmskq (Register dst, Register src)
 
void blsmskq (Register dst, Operand src)
 
void blsmskl (Register dst, Register src)
 
void blsmskl (Register dst, Operand src)
 
void blsrq (Register dst, Register src)
 
void blsrq (Register dst, Operand src)
 
void blsrl (Register dst, Register src)
 
void blsrl (Register dst, Operand src)
 
void tzcntq (Register dst, Register src)
 
void tzcntq (Register dst, Operand src)
 
void tzcntl (Register dst, Register src)
 
void tzcntl (Register dst, Operand src)
 
void lzcntq (Register dst, Register src)
 
void lzcntq (Register dst, Operand src)
 
void lzcntl (Register dst, Register src)
 
void lzcntl (Register dst, Operand src)
 
void popcntq (Register dst, Register src)
 
void popcntq (Register dst, Operand src)
 
void popcntl (Register dst, Register src)
 
void popcntl (Register dst, Operand src)
 
void bzhiq (Register dst, Register src1, Register src2)
 
void bzhiq (Register dst, Operand src1, Register src2)
 
void bzhil (Register dst, Register src1, Register src2)
 
void bzhil (Register dst, Operand src1, Register src2)
 
void mulxq (Register dst1, Register dst2, Register src)
 
void mulxq (Register dst1, Register dst2, Operand src)
 
void mulxl (Register dst1, Register dst2, Register src)
 
void mulxl (Register dst1, Register dst2, Operand src)
 
void pdepq (Register dst, Register src1, Register src2)
 
void pdepq (Register dst, Register src1, Operand src2)
 
void pdepl (Register dst, Register src1, Register src2)
 
void pdepl (Register dst, Register src1, Operand src2)
 
void pextq (Register dst, Register src1, Register src2)
 
void pextq (Register dst, Register src1, Operand src2)
 
void pextl (Register dst, Register src1, Register src2)
 
void pextl (Register dst, Register src1, Operand src2)
 
void sarxq (Register dst, Register src1, Register src2)
 
void sarxq (Register dst, Operand src1, Register src2)
 
void sarxl (Register dst, Register src1, Register src2)
 
void sarxl (Register dst, Operand src1, Register src2)
 
void shlxq (Register dst, Register src1, Register src2)
 
void shlxq (Register dst, Operand src1, Register src2)
 
void shlxl (Register dst, Register src1, Register src2)
 
void shlxl (Register dst, Operand src1, Register src2)
 
void shrxq (Register dst, Register src1, Register src2)
 
void shrxq (Register dst, Operand src1, Register src2)
 
void shrxl (Register dst, Register src1, Register src2)
 
void shrxl (Register dst, Operand src1, Register src2)
 
void rorxq (Register dst, Register src, uint8_t imm8)
 
void rorxq (Register dst, Operand src, uint8_t imm8)
 
void rorxl (Register dst, Register src, uint8_t imm8)
 
void rorxl (Register dst, Operand src, uint8_t imm8)
 
void mfence ()
 
void lfence ()
 
void pause ()
 
void rdpkru ()
 
void wrpkru ()
 
int SizeOfCodeGeneratedSince (Label *label)
 
void RecordDeoptReason (DeoptimizeReason reason, uint32_t node_id, SourcePosition position, int id)
 
void db (uint8_t data)
 
void dd (uint32_t data)
 
void dq (uint64_t data)
 
void dp (uintptr_t data)
 
void dq (Label *label)
 
void WriteBuiltinJumpTableEntry (Label *label, int table_pos)
 
void PatchConstPool ()
 
bool buffer_overflow () const
 
int available_space () const
 
uint8_t byte_at (int pos)
 
void set_byte_at (int pos, uint8_t value)
 
template<>
void EmitHelper (uint8_t x)
 
template<typename T >
void EmitHelper (T x)
 
- Public Member Functions inherited from v8::internal::AssemblerBase
 AssemblerBase (const AssemblerOptions &options, std::unique_ptr< AssemblerBuffer >)
 
virtual ~AssemblerBase ()
 
const AssemblerOptionsoptions () const
 
bool predictable_code_size () const
 
void set_predictable_code_size (bool value)
 
uint64_t enabled_cpu_features () const
 
void set_enabled_cpu_features (uint64_t features)
 
bool IsEnabled (CpuFeature f)
 
void EnableCpuFeature (CpuFeature f)
 
bool is_constant_pool_available () const
 
JumpOptimizationInfojump_optimization_info ()
 
void set_jump_optimization_info (JumpOptimizationInfo *jump_opt)
 
void FinalizeJumpOptimizationInfo ()
 
int pc_offset () const
 
int pc_offset_for_safepoint ()
 
uint8_t * buffer_start () const
 
int buffer_size () const
 
int instruction_size () const
 
std::unique_ptr< AssemblerBufferReleaseBuffer ()
 
void Print (Isolate *isolate)
 
void RecordComment (const char *comment, const SourceLocation &loc=SourceLocation::Current())
 
void RecordComment (std::string comment, const SourceLocation &loc=SourceLocation::Current())
 
- Public Member Functions inherited from v8::internal::AssemblerRISCVI
void lui (Register rd, int32_t imm20)
 
void auipc (Register rd, int32_t imm20)
 
void jal (Register rd, int32_t imm20)
 
void jalr (Register rd, Register rs1, int16_t imm12)
 
void beq (Register rs1, Register rs2, int16_t imm12)
 
void bne (Register rs1, Register rs2, int16_t imm12)
 
void blt (Register rs1, Register rs2, int16_t imm12)
 
void bge (Register rs1, Register rs2, int16_t imm12)
 
void bltu (Register rs1, Register rs2, int16_t imm12)
 
void bgeu (Register rs1, Register rs2, int16_t imm12)
 
void lb (Register rd, Register rs1, int16_t imm12)
 
void lh (Register rd, Register rs1, int16_t imm12)
 
void lw (Register rd, Register rs1, int16_t imm12)
 
void lbu (Register rd, Register rs1, int16_t imm12)
 
void lhu (Register rd, Register rs1, int16_t imm12)
 
void sb (Register source, Register base, int16_t imm12)
 
void sh (Register source, Register base, int16_t imm12)
 
void sw (Register source, Register base, int16_t imm12)
 
void addi (Register rd, Register rs1, int16_t imm12)
 
void slti (Register rd, Register rs1, int16_t imm12)
 
void sltiu (Register rd, Register rs1, int16_t imm12)
 
void xori (Register rd, Register rs1, int16_t imm12)
 
void ori (Register rd, Register rs1, int16_t imm12)
 
void andi (Register rd, Register rs1, int16_t imm12)
 
void slli (Register rd, Register rs1, uint8_t shamt)
 
void srli (Register rd, Register rs1, uint8_t shamt)
 
void srai (Register rd, Register rs1, uint8_t shamt)
 
void add (Register rd, Register rs1, Register rs2)
 
void sub (Register rd, Register rs1, Register rs2)
 
void sll (Register rd, Register rs1, Register rs2)
 
void slt (Register rd, Register rs1, Register rs2)
 
void sltu (Register rd, Register rs1, Register rs2)
 
void xor_ (Register rd, Register rs1, Register rs2)
 
void srl (Register rd, Register rs1, Register rs2)
 
void sra (Register rd, Register rs1, Register rs2)
 
void or_ (Register rd, Register rs1, Register rs2)
 
void and_ (Register rd, Register rs1, Register rs2)
 
void nor (Register rd, Register rs, Register rt)
 
void fence (uint8_t pred, uint8_t succ)
 
void fence_tso ()
 
void ecall ()
 
void ebreak ()
 
void sync ()
 
void unimp ()
 
int32_t branch_offset (Label *L)
 
int32_t jump_offset (Label *L)
 
void beq (Register rs1, Register rs2, Label *L)
 
void bne (Register rs1, Register rs2, Label *L)
 
void blt (Register rs1, Register rs2, Label *L)
 
void bge (Register rs1, Register rs2, Label *L)
 
void bltu (Register rs1, Register rs2, Label *L)
 
void bgeu (Register rs1, Register rs2, Label *L)
 
void beqz (Register rs, int16_t imm13)
 
void beqz (Register rs1, Label *L)
 
void bnez (Register rs, int16_t imm13)
 
void bnez (Register rs1, Label *L)
 
void blez (Register rs, int16_t imm13)
 
void blez (Register rs1, Label *L)
 
void bgez (Register rs, int16_t imm13)
 
void bgez (Register rs1, Label *L)
 
void bltz (Register rs, int16_t imm13)
 
void bltz (Register rs1, Label *L)
 
void bgtz (Register rs, int16_t imm13)
 
void bgtz (Register rs1, Label *L)
 
void bgt (Register rs1, Register rs2, int16_t imm13)
 
void bgt (Register rs1, Register rs2, Label *L)
 
void ble (Register rs1, Register rs2, int16_t imm13)
 
void ble (Register rs1, Register rs2, Label *L)
 
void bgtu (Register rs1, Register rs2, int16_t imm13)
 
void bgtu (Register rs1, Register rs2, Label *L)
 
void bleu (Register rs1, Register rs2, int16_t imm13)
 
void bleu (Register rs1, Register rs2, Label *L)
 
void j (int32_t imm21)
 
void j (Label *L)
 
void b (Label *L)
 
void jal (int32_t imm21)
 
void jal (Label *L)
 
void jr (Register rs)
 
void jr (Register rs, int32_t imm12)
 
void jalr (Register rs, int32_t imm12)
 
void jalr (Register rs)
 
void ret ()
 
void call (int32_t offset)
 
void mv (Register rd, Register rs)
 
void not_ (Register rd, Register rs)
 
void neg (Register rd, Register rs)
 
void seqz (Register rd, Register rs)
 
void snez (Register rd, Register rs)
 
void sltz (Register rd, Register rs)
 
void sgtz (Register rd, Register rs)
 
- Public Member Functions inherited from v8::internal::AssemblerRISCVA
void lr_w (bool aq, bool rl, Register rd, Register addr)
 
void sc_w (bool aq, bool rl, Register rd, Register addr, Register src)
 
void amoswap_w (bool aq, bool rl, Register rd, Register addr, Register src)
 
void amoadd_w (bool aq, bool rl, Register rd, Register addr, Register src)
 
void amoxor_w (bool aq, bool rl, Register rd, Register addr, Register src)
 
void amoand_w (bool aq, bool rl, Register rd, Register addr, Register src)
 
void amoor_w (bool aq, bool rl, Register rd, Register addr, Register src)
 
void amomin_w (bool aq, bool rl, Register rd, Register addr, Register src)
 
void amomax_w (bool aq, bool rl, Register rd, Register addr, Register src)
 
void amominu_w (bool aq, bool rl, Register rd, Register addr, Register src)
 
void amomaxu_w (bool aq, bool rl, Register rd, Register addr, Register src)
 
- Public Member Functions inherited from v8::internal::AssemblerRISCVB
void sh1add (Register rd, Register rs1, Register rs2)
 
void sh2add (Register rd, Register rs1, Register rs2)
 
void sh3add (Register rd, Register rs1, Register rs2)
 
void andn (Register rd, Register rs1, Register rs2)
 
void orn (Register rd, Register rs1, Register rs2)
 
void xnor (Register rd, Register rs1, Register rs2)
 
void clz (Register rd, Register rs)
 
void ctz (Register rd, Register rs)
 
void cpop (Register rd, Register rs)
 
void max (Register rd, Register rs1, Register rs2)
 
void maxu (Register rd, Register rs1, Register rs2)
 
void min (Register rd, Register rs1, Register rs2)
 
void minu (Register rd, Register rs1, Register rs2)
 
void sextb (Register rd, Register rs)
 
void sexth (Register rd, Register rs)
 
void zexth (Register rd, Register rs)
 
void rol (Register rd, Register rs1, Register rs2)
 
void ror (Register rd, Register rs1, Register rs2)
 
void rori (Register rd, Register rs1, uint8_t shamt)
 
void orcb (Register rd, Register rs)
 
void rev8 (Register rd, Register rs)
 
void bclr (Register rd, Register rs1, Register rs2)
 
void bclri (Register rd, Register rs1, uint8_t shamt)
 
void bext (Register rd, Register rs1, Register rs2)
 
void bexti (Register rd, Register rs1, uint8_t shamt)
 
void binv (Register rd, Register rs1, Register rs2)
 
void binvi (Register rd, Register rs1, uint8_t shamt)
 
void bset (Register rd, Register rs1, Register rs2)
 
void bseti (Register rd, Register rs1, uint8_t shamt)
 
- Public Member Functions inherited from v8::internal::AssemblerRISCVF
void flw (FPURegister rd, Register rs1, int16_t imm12)
 
void fsw (FPURegister source, Register base, int16_t imm12)
 
void fmadd_s (FPURegister rd, FPURegister rs1, FPURegister rs2, FPURegister rs3, FPURoundingMode frm=RNE)
 
void fmsub_s (FPURegister rd, FPURegister rs1, FPURegister rs2, FPURegister rs3, FPURoundingMode frm=RNE)
 
void fnmsub_s (FPURegister rd, FPURegister rs1, FPURegister rs2, FPURegister rs3, FPURoundingMode frm=RNE)
 
void fnmadd_s (FPURegister rd, FPURegister rs1, FPURegister rs2, FPURegister rs3, FPURoundingMode frm=RNE)
 
void fadd_s (FPURegister rd, FPURegister rs1, FPURegister rs2, FPURoundingMode frm=RNE)
 
void fsub_s (FPURegister rd, FPURegister rs1, FPURegister rs2, FPURoundingMode frm=RNE)
 
void fmul_s (FPURegister rd, FPURegister rs1, FPURegister rs2, FPURoundingMode frm=RNE)
 
void fdiv_s (FPURegister rd, FPURegister rs1, FPURegister rs2, FPURoundingMode frm=RNE)
 
void fsqrt_s (FPURegister rd, FPURegister rs1, FPURoundingMode frm=RNE)
 
void fsgnj_s (FPURegister rd, FPURegister rs1, FPURegister rs2)
 
void fsgnjn_s (FPURegister rd, FPURegister rs1, FPURegister rs2)
 
void fsgnjx_s (FPURegister rd, FPURegister rs1, FPURegister rs2)
 
void fmin_s (FPURegister rd, FPURegister rs1, FPURegister rs2)
 
void fmax_s (FPURegister rd, FPURegister rs1, FPURegister rs2)
 
void fcvt_w_s (Register rd, FPURegister rs1, FPURoundingMode frm=RNE)
 
void fcvt_wu_s (Register rd, FPURegister rs1, FPURoundingMode frm=RNE)
 
void fmv_x_w (Register rd, FPURegister rs1)
 
void feq_s (Register rd, FPURegister rs1, FPURegister rs2)
 
void flt_s (Register rd, FPURegister rs1, FPURegister rs2)
 
void fle_s (Register rd, FPURegister rs1, FPURegister rs2)
 
void fclass_s (Register rd, FPURegister rs1)
 
void fcvt_s_w (FPURegister rd, Register rs1, FPURoundingMode frm=RNE)
 
void fcvt_s_wu (FPURegister rd, Register rs1, FPURoundingMode frm=RNE)
 
void fmv_w_x (FPURegister rd, Register rs1)
 
void fmv_s (FPURegister rd, FPURegister rs)
 
void fabs_s (FPURegister rd, FPURegister rs)
 
void fneg_s (FPURegister rd, FPURegister rs)
 
- Public Member Functions inherited from v8::internal::AssemblerRISCVD
void fld (FPURegister rd, Register rs1, int16_t imm12)
 
void fsd (FPURegister source, Register base, int16_t imm12)
 
void fmadd_d (FPURegister rd, FPURegister rs1, FPURegister rs2, FPURegister rs3, FPURoundingMode frm=RNE)
 
void fmsub_d (FPURegister rd, FPURegister rs1, FPURegister rs2, FPURegister rs3, FPURoundingMode frm=RNE)
 
void fnmsub_d (FPURegister rd, FPURegister rs1, FPURegister rs2, FPURegister rs3, FPURoundingMode frm=RNE)
 
void fnmadd_d (FPURegister rd, FPURegister rs1, FPURegister rs2, FPURegister rs3, FPURoundingMode frm=RNE)
 
void fadd_d (FPURegister rd, FPURegister rs1, FPURegister rs2, FPURoundingMode frm=RNE)
 
void fsub_d (FPURegister rd, FPURegister rs1, FPURegister rs2, FPURoundingMode frm=RNE)
 
void fmul_d (FPURegister rd, FPURegister rs1, FPURegister rs2, FPURoundingMode frm=RNE)
 
void fdiv_d (FPURegister rd, FPURegister rs1, FPURegister rs2, FPURoundingMode frm=RNE)
 
void fsqrt_d (FPURegister rd, FPURegister rs1, FPURoundingMode frm=RNE)
 
void fsgnj_d (FPURegister rd, FPURegister rs1, FPURegister rs2)
 
void fsgnjn_d (FPURegister rd, FPURegister rs1, FPURegister rs2)
 
void fsgnjx_d (FPURegister rd, FPURegister rs1, FPURegister rs2)
 
void fmin_d (FPURegister rd, FPURegister rs1, FPURegister rs2)
 
void fmax_d (FPURegister rd, FPURegister rs1, FPURegister rs2)
 
void fcvt_s_d (FPURegister rd, FPURegister rs1, FPURoundingMode frm=RNE)
 
void fcvt_d_s (FPURegister rd, FPURegister rs1, FPURoundingMode frm=RNE)
 
void feq_d (Register rd, FPURegister rs1, FPURegister rs2)
 
void flt_d (Register rd, FPURegister rs1, FPURegister rs2)
 
void fle_d (Register rd, FPURegister rs1, FPURegister rs2)
 
void fclass_d (Register rd, FPURegister rs1)
 
void fcvt_w_d (Register rd, FPURegister rs1, FPURoundingMode frm=RNE)
 
void fcvt_wu_d (Register rd, FPURegister rs1, FPURoundingMode frm=RNE)
 
void fcvt_d_w (FPURegister rd, Register rs1, FPURoundingMode frm=RNE)
 
void fcvt_d_wu (FPURegister rd, Register rs1, FPURoundingMode frm=RNE)
 
void fmv_d (FPURegister rd, FPURegister rs)
 
void fabs_d (FPURegister rd, FPURegister rs)
 
void fneg_d (FPURegister rd, FPURegister rs)
 
- Public Member Functions inherited from v8::internal::AssemblerRISCVM
void mul (Register rd, Register rs1, Register rs2)
 
void mulh (Register rd, Register rs1, Register rs2)
 
void mulhsu (Register rd, Register rs1, Register rs2)
 
void mulhu (Register rd, Register rs1, Register rs2)
 
void div (Register rd, Register rs1, Register rs2)
 
void divu (Register rd, Register rs1, Register rs2)
 
void rem (Register rd, Register rs1, Register rs2)
 
void remu (Register rd, Register rs1, Register rs2)
 
- Public Member Functions inherited from v8::internal::AssemblerRISCVC
void c_nop ()
 
void c_addi (Register rd, int8_t imm6)
 
void c_addi16sp (int16_t imm10)
 
void c_addi4spn (Register rd, int16_t uimm10)
 
void c_li (Register rd, int8_t imm6)
 
void c_lui (Register rd, int8_t imm6)
 
void c_slli (Register rd, uint8_t shamt6)
 
void c_lwsp (Register rd, uint16_t uimm8)
 
void c_jr (Register rs1)
 
void c_mv (Register rd, Register rs2)
 
void c_ebreak ()
 
void c_jalr (Register rs1)
 
void c_j (int16_t imm12)
 
void c_add (Register rd, Register rs2)
 
void c_sub (Register rd, Register rs2)
 
void c_and (Register rd, Register rs2)
 
void c_xor (Register rd, Register rs2)
 
void c_or (Register rd, Register rs2)
 
void c_swsp (Register rs2, uint16_t uimm8)
 
void c_lw (Register rd, Register rs1, uint16_t uimm7)
 
void c_sw (Register rs2, Register rs1, uint16_t uimm7)
 
void c_bnez (Register rs1, int16_t imm9)
 
void c_beqz (Register rs1, int16_t imm9)
 
void c_srli (Register rs1, int8_t shamt6)
 
void c_srai (Register rs1, int8_t shamt6)
 
void c_andi (Register rs1, int8_t imm6)
 
void c_fld (FPURegister rd, Register rs1, uint16_t uimm8)
 
void c_fsd (FPURegister rs2, Register rs1, uint16_t uimm8)
 
void c_fldsp (FPURegister rd, uint16_t uimm9)
 
void c_fsdsp (FPURegister rs2, uint16_t uimm9)
 
int CJumpOffset (Instr instr)
 
int16_t cjump_offset (Label *L)
 
int32_t cbranch_offset (Label *L)
 
void c_j (Label *L)
 
void c_bnez (Register rs1, Label *L)
 
void c_beqz (Register rs1, Label *L)
 
- Public Member Functions inherited from v8::internal::AssemblerRISCVZifencei
void fence_i ()
 
- Public Member Functions inherited from v8::internal::AssemblerRISCVZicsr
void csrrw (Register rd, ControlStatusReg csr, Register rs1)
 
void csrrs (Register rd, ControlStatusReg csr, Register rs1)
 
void csrrc (Register rd, ControlStatusReg csr, Register rs1)
 
void csrrwi (Register rd, ControlStatusReg csr, uint8_t imm5)
 
void csrrsi (Register rd, ControlStatusReg csr, uint8_t imm5)
 
void csrrci (Register rd, ControlStatusReg csr, uint8_t imm5)
 
void rdinstret (Register rd)
 
void rdinstreth (Register rd)
 
void rdcycle (Register rd)
 
void rdcycleh (Register rd)
 
void rdtime (Register rd)
 
void rdtimeh (Register rd)
 
void csrr (Register rd, ControlStatusReg csr)
 
void csrw (ControlStatusReg csr, Register rs)
 
void csrs (ControlStatusReg csr, Register rs)
 
void csrc (ControlStatusReg csr, Register rs)
 
void csrwi (ControlStatusReg csr, uint8_t imm)
 
void csrsi (ControlStatusReg csr, uint8_t imm)
 
void csrci (ControlStatusReg csr, uint8_t imm)
 
void frcsr (Register rd)
 
void fscsr (Register rd, Register rs)
 
void fscsr (Register rs)
 
void frrm (Register rd)
 
void fsrm (Register rd, Register rs)
 
void fsrm (Register rs)
 
void frflags (Register rd)
 
void fsflags (Register rd, Register rs)
 
void fsflags (Register rs)
 
- Public Member Functions inherited from v8::internal::AssemblerRISCVZicond
void czero_eqz (Register rd, Register rs1, Register rs2)
 
void czero_nez (Register rd, Register rs1, Register rs2)
 
- Public Member Functions inherited from v8::internal::AssemblerRISCVZfh
void flh (FPURegister rd, Register rs1, int16_t imm12)
 
void fsh (FPURegister source, Register base, int16_t imm12)
 
void fadd_h (FPURegister rd, FPURegister rs1, FPURegister rs2, FPURoundingMode frm=RNE)
 
void fsub_h (FPURegister rd, FPURegister rs1, FPURegister rs2, FPURoundingMode frm=RNE)
 
void fmul_h (FPURegister rd, FPURegister rs1, FPURegister rs2, FPURoundingMode frm=RNE)
 
void fdiv_h (FPURegister rd, FPURegister rs1, FPURegister rs2, FPURoundingMode frm=RNE)
 
void fmin_h (FPURegister rd, FPURegister rs1, FPURegister rs2)
 
void fmax_h (FPURegister rd, FPURegister rs1, FPURegister rs2)
 
void fsqrt_h (FPURegister rd, FPURegister rs1, FPURoundingMode frm=RNE)
 
void fmadd_h (FPURegister rd, FPURegister rs1, FPURegister rs2, FPURegister rs3, FPURoundingMode frm=RNE)
 
void fmsub_h (FPURegister rd, FPURegister rs1, FPURegister rs2, FPURegister rs3, FPURoundingMode frm=RNE)
 
void fnmsub_h (FPURegister rd, FPURegister rs1, FPURegister rs2, FPURegister rs3, FPURoundingMode frm=RNE)
 
void fnmadd_h (FPURegister rd, FPURegister rs1, FPURegister rs2, FPURegister rs3, FPURoundingMode frm=RNE)
 
void fcvt_h_w (FPURegister rd, Register rs1, FPURoundingMode frm=RNE)
 
void fcvt_h_wu (FPURegister rd, Register rs1, FPURoundingMode frm=RNE)
 
void fcvt_w_h (Register rd, FPURegister rs1, FPURoundingMode frm=RNE)
 
void fcvt_wu_h (Register rd, FPURegister rs1, FPURoundingMode frm=RNE)
 
void fcvt_h_s (FPURegister rd, FPURegister rs1, FPURoundingMode frm=RNE)
 
void fcvt_s_h (FPURegister rd, FPURegister rs1, FPURoundingMode frm=RNE)
 
void fcvt_h_d (FPURegister rd, FPURegister rs1, FPURoundingMode frm=RNE)
 
void fcvt_d_h (FPURegister rd, FPURegister rs1, FPURoundingMode frm=RNE)
 
void fsgnj_h (FPURegister rd, FPURegister rs1, FPURegister rs2)
 
void fsgnjn_h (FPURegister rd, FPURegister rs1, FPURegister rs2)
 
void fsgnjx_h (FPURegister rd, FPURegister rs1, FPURegister rs2)
 
void fmv_h_x (FPURegister rd, Register rs1)
 
void fmv_x_h (Register rd, FPURegister rs1)
 
void feq_h (Register rd, FPURegister rs1, FPURegister rs2)
 
void flt_h (Register rd, FPURegister rs1, FPURegister rs2)
 
void fle_h (Register rd, FPURegister rs1, FPURegister rs2)
 
void fclass_h (Register rd, FPURegister rs1)
 
- Public Member Functions inherited from v8::internal::AssemblerRISCVV
void vl (VRegister vd, Register rs1, uint8_t lumop, VSew vsew, MaskType mask=NoMask)
 
void vls (VRegister vd, Register rs1, Register rs2, VSew vsew, MaskType mask=NoMask)
 
void vlx (VRegister vd, Register rs1, VRegister vs3, VSew vsew, MaskType mask=NoMask)
 
void vs (VRegister vd, Register rs1, uint8_t sumop, VSew vsew, MaskType mask=NoMask)
 
void vss (VRegister vd, Register rs1, Register rs2, VSew vsew, MaskType mask=NoMask)
 
void vsx (VRegister vd, Register rs1, VRegister vs3, VSew vsew, MaskType mask=NoMask)
 
void vsu (VRegister vd, Register rs1, VRegister vs3, VSew vsew, MaskType mask=NoMask)
 
 SegInstr (vl) SegInstr(vs) SegInstr(vls) SegInstr(vss) SegInstr(vsx) SegInstr(vlx) void vmv_vv(VRegister vd
 
void vmv_vx (VRegister vd, Register rs1)
 
void vmv_vi (VRegister vd, uint8_t simm5)
 
void vmv_xs (Register rd, VRegister vs2)
 
void vmv_sx (VRegister vd, Register rs1)
 
void vmerge_vv (VRegister vd, VRegister vs1, VRegister vs2)
 
void vmerge_vx (VRegister vd, Register rs1, VRegister vs2)
 
void vmerge_vi (VRegister vd, uint8_t imm5, VRegister vs2)
 
void vredmaxu_vs (VRegister vd, VRegister vs2, VRegister vs1, MaskType mask=NoMask)
 
void vredmax_vs (VRegister vd, VRegister vs2, VRegister vs1, MaskType mask=NoMask)
 
void vredmin_vs (VRegister vd, VRegister vs2, VRegister vs1, MaskType mask=NoMask)
 
void vredminu_vs (VRegister vd, VRegister vs2, VRegister vs1, MaskType mask=NoMask)
 
void vadc_vv (VRegister vd, VRegister vs1, VRegister vs2)
 
void vadc_vx (VRegister vd, Register rs1, VRegister vs2)
 
void vadc_vi (VRegister vd, uint8_t imm5, VRegister vs2)
 
void vmadc_vv (VRegister vd, VRegister vs1, VRegister vs2)
 
void vmadc_vx (VRegister vd, Register rs1, VRegister vs2)
 
void vmadc_vi (VRegister vd, uint8_t imm5, VRegister vs2)
 
void vfmv_vf (VRegister vd, FPURegister fs1)
 
void vfmv_fs (FPURegister fd, VRegister vs2)
 
void vfmv_sf (VRegister vd, FPURegister fs)
 
void vfmerge_vf (VRegister vd, FPURegister fs1, VRegister vs2)
 
void vwaddu_wx (VRegister vd, VRegister vs2, Register rs1, MaskType mask=NoMask)
 
void vid_v (VRegister vd, MaskType mask=Mask)
 
void vnot_vv (VRegister dst, VRegister src, MaskType mask=NoMask)
 
void vneg_vv (VRegister dst, VRegister src, MaskType mask=NoMask)
 
void vfneg_vv (VRegister dst, VRegister src, MaskType mask=NoMask)
 
void vfabs_vv (VRegister dst, VRegister src, MaskType mask=NoMask)
 
void vfirst_m (Register rd, VRegister vs2, MaskType mask=NoMask)
 
void vcpop_m (Register rd, VRegister vs2, MaskType mask=NoMask)
 
void vmslt_vi (VRegister vd, VRegister vs1, int8_t imm5, MaskType mask=NoMask)
 
void vmsltu_vi (VRegister vd, VRegister vs1, int8_t imm5, MaskType mask=NoMask)
 
- Public Member Functions inherited from v8::internal::SharedMacroAssembler< MacroAssembler >
void Abspd (XMMRegister dst, XMMRegister src, Register tmp)
 
void Absps (XMMRegister dst, XMMRegister src, Register tmp)
 
void Absph (XMMRegister dst, XMMRegister src, Register tmp)
 
void Negpd (XMMRegister dst, XMMRegister src, Register tmp)
 
void Negps (XMMRegister dst, XMMRegister src, Register tmp)
 
void Negph (XMMRegister dst, XMMRegister src, Register tmp)
 
void Pextrd (Register dst, XMMRegister src, uint8_t imm8)
 
void Pinsrd (XMMRegister dst, XMMRegister src1, Op src2, uint8_t imm8, uint32_t *load_pc_offset=nullptr)
 
void Pinsrd (XMMRegister dst, Op src, uint8_t imm8, uint32_t *load_pc_offset=nullptr)
 
void F64x2ConvertLowI32x4U (XMMRegister dst, XMMRegister src, Register scratch)
 
void I32x4SConvertF32x4 (XMMRegister dst, XMMRegister src, XMMRegister tmp, Register scratch)
 
void I32x4TruncSatF64x2SZero (XMMRegister dst, XMMRegister src, XMMRegister scratch, Register tmp)
 
void I32x4TruncSatF64x2UZero (XMMRegister dst, XMMRegister src, XMMRegister scratch, Register tmp)
 
void I32x4TruncF32x4U (XMMRegister dst, XMMRegister src, XMMRegister scratch1, XMMRegister scratch2)
 
void I32x4ExtAddPairwiseI16x8S (XMMRegister dst, XMMRegister src, Register scratch)
 
void I16x8ExtAddPairwiseI8x16S (XMMRegister dst, XMMRegister src, XMMRegister scratch, Register tmp)
 
void I16x8ExtAddPairwiseI8x16U (XMMRegister dst, XMMRegister src, Register scratch)
 
void I8x16Swizzle (XMMRegister dst, XMMRegister src, XMMRegister mask, XMMRegister scratch, Register tmp, bool omit_add=false)
 
void I8x16Popcnt (XMMRegister dst, XMMRegister src, XMMRegister tmp1, XMMRegister tmp2, Register scratch)
 
- Public Member Functions inherited from v8::internal::SharedMacroAssemblerBase
void Move (Register dst, uint32_t src)
 
void Move (Register dst, Register src)
 
void Add (Register dst, Immediate src)
 
void And (Register dst, Immediate src)
 
void Movhps (XMMRegister dst, XMMRegister src1, Operand src2)
 
void Movlps (XMMRegister dst, XMMRegister src1, Operand src2)
 
void Blendvps (XMMRegister dst, XMMRegister src1, XMMRegister src2, XMMRegister mask)
 
void Blendvpd (XMMRegister dst, XMMRegister src1, XMMRegister src2, XMMRegister mask)
 
void Pblendvb (XMMRegister dst, XMMRegister src1, XMMRegister src2, XMMRegister mask)
 
template<typename Op >
void Pinsrb (XMMRegister dst, XMMRegister src1, Op src2, uint8_t imm8, uint32_t *load_pc_offset=nullptr)
 
template<typename Op >
void Pinsrw (XMMRegister dst, XMMRegister src1, Op src2, uint8_t imm8, uint32_t *load_pc_offset=nullptr)
 
template<typename Op >
void Pshufb (XMMRegister dst, XMMRegister src, Op mask)
 
template<typename Op >
void Pshufb (XMMRegister dst, Op mask)
 
void Shufps (XMMRegister dst, XMMRegister src1, XMMRegister src2, uint8_t imm8)
 
void F64x2ExtractLane (DoubleRegister dst, XMMRegister src, uint8_t lane)
 
void F64x2ReplaceLane (XMMRegister dst, XMMRegister src, DoubleRegister rep, uint8_t lane)
 
void F64x2Min (XMMRegister dst, XMMRegister lhs, XMMRegister rhs, XMMRegister scratch)
 
void F64x2Max (XMMRegister dst, XMMRegister lhs, XMMRegister rhs, XMMRegister scratch)
 
void F32x4Splat (XMMRegister dst, DoubleRegister src)
 
void F32x4ExtractLane (FloatRegister dst, XMMRegister src, uint8_t lane)
 
void F32x4Min (XMMRegister dst, XMMRegister lhs, XMMRegister rhs, XMMRegister scratch)
 
void F32x4Max (XMMRegister dst, XMMRegister lhs, XMMRegister rhs, XMMRegister scratch)
 
void S128Store32Lane (Operand dst, XMMRegister src, uint8_t laneidx)
 
void I8x16Splat (XMMRegister dst, Register src, XMMRegister scratch)
 
void I8x16Splat (XMMRegister dst, Operand src, XMMRegister scratch)
 
void I8x16Shl (XMMRegister dst, XMMRegister src1, uint8_t src2, Register tmp1, XMMRegister tmp2)
 
void I8x16Shl (XMMRegister dst, XMMRegister src1, Register src2, Register tmp1, XMMRegister tmp2, XMMRegister tmp3)
 
void I8x16ShrS (XMMRegister dst, XMMRegister src1, uint8_t src2, XMMRegister tmp)
 
void I8x16ShrS (XMMRegister dst, XMMRegister src1, Register src2, Register tmp1, XMMRegister tmp2, XMMRegister tmp3)
 
void I8x16ShrU (XMMRegister dst, XMMRegister src1, uint8_t src2, Register tmp1, XMMRegister tmp2)
 
void I8x16ShrU (XMMRegister dst, XMMRegister src1, Register src2, Register tmp1, XMMRegister tmp2, XMMRegister tmp3)
 
void I16x8Splat (XMMRegister dst, Register src)
 
void I16x8Splat (XMMRegister dst, Operand src)
 
void I16x8ExtMulLow (XMMRegister dst, XMMRegister src1, XMMRegister src2, XMMRegister scrat, bool is_signed)
 
void I16x8ExtMulHighS (XMMRegister dst, XMMRegister src1, XMMRegister src2, XMMRegister scratch)
 
void I16x8ExtMulHighU (XMMRegister dst, XMMRegister src1, XMMRegister src2, XMMRegister scratch)
 
void I16x8SConvertI8x16High (XMMRegister dst, XMMRegister src)
 
void I16x8UConvertI8x16High (XMMRegister dst, XMMRegister src, XMMRegister scratch)
 
void I16x8Q15MulRSatS (XMMRegister dst, XMMRegister src1, XMMRegister src2, XMMRegister scratch)
 
void I16x8DotI8x16I7x16S (XMMRegister dst, XMMRegister src1, XMMRegister src2)
 
void I32x4DotI8x16I7x16AddS (XMMRegister dst, XMMRegister src1, XMMRegister src2, XMMRegister src3, XMMRegister scratch, XMMRegister splat_reg)
 
void I32x4ExtAddPairwiseI16x8U (XMMRegister dst, XMMRegister src, XMMRegister tmp)
 
void I32x4ExtMul (XMMRegister dst, XMMRegister src1, XMMRegister src2, XMMRegister scratch, bool low, bool is_signed)
 
void I32x4SConvertI16x8High (XMMRegister dst, XMMRegister src)
 
void I32x4UConvertI16x8High (XMMRegister dst, XMMRegister src, XMMRegister scratch)
 
void I64x2Neg (XMMRegister dst, XMMRegister src, XMMRegister scratch)
 
void I64x2Abs (XMMRegister dst, XMMRegister src, XMMRegister scratch)
 
void I64x2GtS (XMMRegister dst, XMMRegister src0, XMMRegister src1, XMMRegister scratch)
 
void I64x2GeS (XMMRegister dst, XMMRegister src0, XMMRegister src1, XMMRegister scratch)
 
void I64x2ShrS (XMMRegister dst, XMMRegister src, uint8_t shift, XMMRegister xmm_tmp)
 
void I64x2ShrS (XMMRegister dst, XMMRegister src, Register shift, XMMRegister xmm_tmp, XMMRegister xmm_shift, Register tmp_shift)
 
void I64x2Mul (XMMRegister dst, XMMRegister lhs, XMMRegister rhs, XMMRegister tmp1, XMMRegister tmp2)
 
void I64x2ExtMul (XMMRegister dst, XMMRegister src1, XMMRegister src2, XMMRegister scratch, bool low, bool is_signed)
 
void I64x2SConvertI32x4High (XMMRegister dst, XMMRegister src)
 
void I64x2UConvertI32x4High (XMMRegister dst, XMMRegister src, XMMRegister scratch)
 
void S128Not (XMMRegister dst, XMMRegister src, XMMRegister scratch)
 
void S128Select (XMMRegister dst, XMMRegister mask, XMMRegister src1, XMMRegister src2, XMMRegister scratch)
 
void S128Load8Splat (XMMRegister dst, Operand src, XMMRegister scratch)
 
void S128Load16Splat (XMMRegister dst, Operand src, XMMRegister scratch)
 
void S128Load32Splat (XMMRegister dst, Operand src)
 
void S128Store64Lane (Operand dst, XMMRegister src, uint8_t laneidx)
 
void F64x2Qfma (XMMRegister dst, XMMRegister src1, XMMRegister src2, XMMRegister src3, XMMRegister tmp)
 
void F64x2Qfms (XMMRegister dst, XMMRegister src1, XMMRegister src2, XMMRegister src3, XMMRegister tmp)
 
void F32x4Qfma (XMMRegister dst, XMMRegister src1, XMMRegister src2, XMMRegister src3, XMMRegister tmp)
 
void F32x4Qfms (XMMRegister dst, XMMRegister src1, XMMRegister src2, XMMRegister src3, XMMRegister tmp)
 
 MacroAssemblerBase (Isolate *isolate, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (Isolate *isolate, MaybeAssemblerZone zone, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (Isolate *isolate, const AssemblerOptions &options, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (Isolate *isolate, MaybeAssemblerZone zone, AssemblerOptions options, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 
 MacroAssemblerBase (MaybeAssemblerZone zone, AssemblerOptions options, CodeObjectRequired create_code_object, std::unique_ptr< AssemblerBuffer > buffer={})
 

Static Public Member Functions

static constexpr RegList GetAllocatableRegisters ()
 
static constexpr DoubleRegList GetAllocatableDoubleRegisters ()
 
- Static Public Member Functions inherited from v8::internal::MacroAssembler
static int ActivationFrameAlignment ()
 
static bool IsNearCallOffset (int64_t offset)
 
static unsigned CountSetHalfWords (uint64_t imm, unsigned reg_size)
 
static CPURegList DefaultTmpList ()
 
static CPURegList DefaultFPTmpList ()
 
static bool IsImmMovn (uint64_t imm, unsigned reg_size)
 
static bool IsImmMovz (uint64_t imm, unsigned reg_size)
 
static int InstrCountForLi64Bit (int64_t value)
 
static bool IsNearCallOffset (int64_t offset)
 
static int64_t CalculateTargetOffset (Address target, RelocInfo::Mode rmode, uint8_t *pc)
 
static int ActivationFrameAlignment ()
 
static int InstrCountForLi64Bit (int64_t value)
 
static int ActivationFrameAlignment ()
 
static int ActivationFrameAlignment ()
 
static int CallSizeNotPredictableCodeSize (Address target, RelocInfo::Mode rmode, Condition cond=al)
 
static int InstrCountForLi64Bit (int64_t value)
 
static int64_t CalculateTargetOffset (Address target, RelocInfo::Mode rmode, uint8_t *pc)
 
static int ActivationFrameAlignment ()
 
static int ActivationFrameAlignment ()
 
static int CallSizeNotPredictableCodeSize (Address target, RelocInfo::Mode rmode, Condition cond=al)
 
static int ArgumentStackSlotsForCFunctionCall (int num_arguments)
 
- Static Public Member Functions inherited from v8::internal::MacroAssemblerBase
static constexpr bool CanBeImmediate (RootIndex index)
 
static Tagged_t ReadOnlyRootPtr (RootIndex index, Isolate *isolate)
 
static int32_t RootRegisterOffsetForRootIndex (RootIndex root_index)
 
static int32_t RootRegisterOffsetForBuiltin (Builtin builtin)
 
static intptr_t RootRegisterOffsetForExternalReference (Isolate *isolate, const ExternalReference &reference)
 
static int32_t RootRegisterOffsetForExternalReferenceTableEntry (Isolate *isolate, const ExternalReference &reference)
 
static bool IsAddressableThroughRootRegister (Isolate *isolate, const ExternalReference &reference)
 
- Static Public Member Functions inherited from v8::internal::Assembler
static RegList DefaultTmpList ()
 
static VfpRegList DefaultFPTmpList ()
 
static bool is_constant_pool_load (Address pc)
 
static Address constant_pool_entry_address (Address pc, Address constant_pool)
 
static Address target_address_at (Address pc, Address constant_pool)
 
static void set_target_address_at (Address pc, Address constant_pool, Address target, WritableJitAllocation *jit_allocation, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)
 
static int deserialization_special_target_size (Address location)
 
static void deserialization_set_target_internal_reference_at (Address pc, Address target, WritableJitAllocation &jit_allocation, RelocInfo::Mode mode=RelocInfo::INTERNAL_REFERENCE)
 
static uint32_t uint32_constant_at (Address pc, Address constant_pool)
 
static void set_uint32_constant_at (Address pc, Address constant_pool, uint32_t new_constant, WritableJitAllocation *jit_allocation, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)
 
static bool ImmediateFitsAddrMode1Instruction (int32_t imm32)
 
static Instr instr_at (Address pc)
 
static void instr_at_put (Address pc, Instr instr)
 
static Condition GetCondition (Instr instr)
 
static bool IsLdrRegisterImmediate (Instr instr)
 
static bool IsVldrDRegisterImmediate (Instr instr)
 
static int GetLdrRegisterImmediateOffset (Instr instr)
 
static int GetVldrDRegisterImmediateOffset (Instr instr)
 
static Instr SetLdrRegisterImmediateOffset (Instr instr, int offset)
 
static Instr SetVldrDRegisterImmediateOffset (Instr instr, int offset)
 
static bool IsStrRegisterImmediate (Instr instr)
 
static Instr SetStrRegisterImmediateOffset (Instr instr, int offset)
 
static bool IsAddRegisterImmediate (Instr instr)
 
static Instr SetAddRegisterImmediateOffset (Instr instr, int offset)
 
static Register GetRd (Instr instr)
 
static Register GetRn (Instr instr)
 
static Register GetRm (Instr instr)
 
static bool IsPush (Instr instr)
 
static bool IsPop (Instr instr)
 
static bool IsStrRegFpOffset (Instr instr)
 
static bool IsLdrRegFpOffset (Instr instr)
 
static bool IsStrRegFpNegOffset (Instr instr)
 
static bool IsLdrRegFpNegOffset (Instr instr)
 
static bool IsLdrPcImmediateOffset (Instr instr)
 
static bool IsBOrBlPcImmediateOffset (Instr instr)
 
static bool IsVldrDPcImmediateOffset (Instr instr)
 
static bool IsBlxReg (Instr instr)
 
static bool IsBlxIp (Instr instr)
 
static bool IsTstImmediate (Instr instr)
 
static bool IsCmpRegister (Instr instr)
 
static bool IsCmpImmediate (Instr instr)
 
static Register GetCmpImmediateRegister (Instr instr)
 
static int GetCmpImmediateRawImmediate (Instr instr)
 
static bool IsNop (Instr instr, int type=NON_MARKING_NOP)
 
static bool IsMovImmed (Instr instr)
 
static bool IsOrrImmed (Instr instr)
 
static bool IsMovT (Instr instr)
 
static Instr GetMovTPattern ()
 
static bool IsMovW (Instr instr)
 
static Instr GetMovWPattern ()
 
static Instr EncodeMovwImmediate (uint32_t immediate)
 
static Instr PatchMovwImmediate (Instr instruction, uint32_t immediate)
 
static int DecodeShiftImm (Instr instr)
 
static Instr PatchShiftImm (Instr instr, int immed)
 
static Address target_pointer_address_at (Address pc)
 
static Address target_address_at (Address pc, Address constant_pool)
 
static Tagged_t target_compressed_address_at (Address pc, Address constant_pool)
 
static void set_target_address_at (Address pc, Address constant_pool, Address target, WritableJitAllocation *jit_allocation, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)
 
static void set_target_compressed_address_at (Address pc, Address constant_pool, Tagged_t target, WritableJitAllocation *jit_allocation, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)
 
static Builtin target_builtin_at (Address pc)
 
static int deserialization_special_target_size (Address location)
 
static void deserialization_set_target_internal_reference_at (Address pc, Address target, WritableJitAllocation &jit_allocation, RelocInfo::Mode mode=RelocInfo::INTERNAL_REFERENCE)
 
static uint32_t uint32_constant_at (Address pc, Address constant_pool)
 
static void set_uint32_constant_at (Address pc, Address constant_pool, uint32_t new_constant, WritableJitAllocation *jit_allocation=nullptr, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)
 
static bool IsConstantPoolAt (Instruction *instr)
 
static int ConstantPoolSizeAt (Instruction *instr)
 
static Instr Rd (CPURegister rd)
 
static Instr Rn (CPURegister rn)
 
static Instr Rm (CPURegister rm)
 
static Instr RmNot31 (CPURegister rm)
 
static Instr Ra (CPURegister ra)
 
static Instr Rt (CPURegister rt)
 
static Instr Rt2 (CPURegister rt2)
 
static Instr Rs (CPURegister rs)
 
static Instr RdSP (Register rd)
 
static Instr RnSP (Register rn)
 
static Instr Flags (FlagsUpdate S)
 
static Instr Cond (Condition cond)
 
static Instr ImmPCRelAddress (int imm21)
 
static Instr ImmUncondBranch (int imm26)
 
static Instr ImmCondBranch (int imm19)
 
static Instr ImmCmpBranch (int imm19)
 
static Instr ImmTestBranch (int imm14)
 
static Instr ImmTestBranchBit (unsigned bit_pos)
 
static Instr SF (Register rd)
 
static Instr ImmAddSub (int imm)
 
static Instr ImmS (unsigned imms, unsigned reg_size)
 
static Instr ImmR (unsigned immr, unsigned reg_size)
 
static Instr ImmSetBits (unsigned imms, unsigned reg_size)
 
static Instr ImmRotate (unsigned immr, unsigned reg_size)
 
static Instr ImmLLiteral (int imm19)
 
static Instr BitN (unsigned bitn, unsigned reg_size)
 
static Instr ShiftDP (Shift shift)
 
static Instr ImmDPShift (unsigned amount)
 
static Instr ExtendMode (Extend extend)
 
static Instr ImmExtendShift (unsigned left_shift)
 
static Instr ImmCondCmp (unsigned imm)
 
static Instr Nzcv (StatusFlags nzcv)
 
static constexpr bool IsImmAddSub (int64_t immediate)
 
static constexpr bool IsImmConditionalCompare (int64_t immediate)
 
static bool IsImmLogical (uint64_t value, unsigned width, unsigned *n, unsigned *imm_s, unsigned *imm_r)
 
static Instr ImmLSUnsigned (int imm12)
 
static Instr ImmLS (int imm9)
 
static Instr ImmLSPair (int imm7, unsigned size)
 
static Instr ImmShiftLS (unsigned shift_amount)
 
static Instr ImmException (int imm16)
 
static Instr ImmSystemRegister (int imm15)
 
static Instr ImmHint (int imm7)
 
static Instr ImmBarrierDomain (int imm2)
 
static Instr ImmBarrierType (int imm2)
 
static unsigned CalcLSDataSizeLog2 (LoadStoreOp op)
 
static Instr VFormat (VRegister vd)
 
static Instr FPFormat (VRegister vd)
 
static Instr LSVFormat (VRegister vd)
 
static Instr SFormat (VRegister vd)
 
static Instr ImmNEONHLM (int index, int num_bits)
 
static Instr ImmNEONExt (int imm4)
 
static Instr ImmNEON5 (Instr format, int index)
 
static Instr ImmNEON4 (Instr format, int index)
 
static Instr ImmNEONabcdefgh (int imm8)
 
static Instr NEONCmode (int cmode)
 
static Instr NEONModImmOp (int op)
 
static constexpr bool IsImmLSUnscaled (int64_t offset)
 
static constexpr bool IsImmLSScaled (int64_t offset, unsigned size_log2)
 
static bool IsImmLLiteral (int64_t offset)
 
static Instr ImmMoveWide (int imm)
 
static Instr ShiftMoveWide (int shift)
 
static Instr ImmFP (double imm)
 
static Instr ImmNEONFP (double imm)
 
static Instr FPScale (unsigned scale)
 
static Instr FPType (VRegister fd)
 
static Address target_address_at (Address pc, Address constant_pool)
 
static void set_target_address_at (Address pc, Address constant_pool, Address target, WritableJitAllocation *jit_allocation, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)
 
static int deserialization_special_target_size (Address instruction_payload)
 
static void deserialization_set_target_internal_reference_at (Address pc, Address target, WritableJitAllocation &jit_allocation, RelocInfo::Mode mode=RelocInfo::INTERNAL_REFERENCE)
 
static uint32_t uint32_constant_at (Address pc, Address constant_pool)
 
static void set_uint32_constant_at (Address pc, Address constant_pool, uint32_t new_constant, WritableJitAllocation *jit_allocation, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)
 
static bool IsNop (Address addr)
 
static Address target_address_at (Address pc)
 
static uint32_t target_compressed_address_at (Address pc)
 
static Address target_address_at (Address pc, Address constant_pool)
 
static Tagged_t target_compressed_address_at (Address pc, Address constant_pool)
 
static void set_target_address_at (Address pc, Address constant_pool, Address target, WritableJitAllocation *jit_allocation, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)
 
static void set_target_compressed_address_at (Address pc, Address constant_pool, Tagged_t target, WritableJitAllocation *jit_allocation, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)
 
static Builtin target_builtin_at (Address pc)
 
static void set_target_value_at (Address pc, uint64_t target, WritableJitAllocation *jit_allocation=nullptr, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)
 
static void set_target_compressed_value_at (Address pc, uint32_t target, WritableJitAllocation *jit_allocation=nullptr, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)
 
static void JumpLabelToJumpRegister (Address pc)
 
static int deserialization_special_target_size (Address instruction_payload)
 
static void deserialization_set_target_internal_reference_at (Address pc, Address target, WritableJitAllocation &jit_allocation, RelocInfo::Mode mode=RelocInfo::INTERNAL_REFERENCE)
 
static uint32_t uint32_constant_at (Address pc, Address constant_pool)
 
static void set_uint32_constant_at (Address pc, Address constant_pool, uint32_t new_constant, WritableJitAllocation *jit_allocation, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)
 
static void RelocateRelativeReference (RelocInfo::Mode rmode, Address pc, intptr_t pc_delta, WritableJitAllocation *jit_allocation=nullptr)
 
static Instr instr_at (Address pc)
 
static void instr_at_put (Address pc, Instr instr, WritableJitAllocation *jit_allocation=nullptr)
 
static bool IsBranch (Instr instr)
 
static bool IsB (Instr instr)
 
static bool IsBz (Instr instr)
 
static bool IsNal (Instr instr)
 
static bool IsBeq (Instr instr)
 
static bool IsBne (Instr instr)
 
static bool IsJump (Instr instr)
 
static bool IsMov (Instr instr, Register rd, Register rs)
 
static bool IsPcAddi (Instr instr)
 
static bool IsJ (Instr instr)
 
static bool IsLu12i_w (Instr instr)
 
static bool IsOri (Instr instr)
 
static bool IsLu32i_d (Instr instr)
 
static bool IsLu52i_d (Instr instr)
 
static bool IsNop (Instr instr, unsigned int type)
 
static Register GetRjReg (Instr instr)
 
static Register GetRkReg (Instr instr)
 
static Register GetRdReg (Instr instr)
 
static uint32_t GetRj (Instr instr)
 
static uint32_t GetRjField (Instr instr)
 
static uint32_t GetRk (Instr instr)
 
static uint32_t GetRkField (Instr instr)
 
static uint32_t GetRd (Instr instr)
 
static uint32_t GetRdField (Instr instr)
 
static uint32_t GetSa2 (Instr instr)
 
static uint32_t GetSa3 (Instr instr)
 
static uint32_t GetSa2Field (Instr instr)
 
static uint32_t GetSa3Field (Instr instr)
 
static uint32_t GetOpcodeField (Instr instr)
 
static uint32_t GetFunction (Instr instr)
 
static uint32_t GetFunctionField (Instr instr)
 
static uint32_t GetImmediate16 (Instr instr)
 
static uint32_t GetLabelConst (Instr instr)
 
static bool IsAddImmediate (Instr instr)
 
static Instr SetAddImmediateOffset (Instr instr, int16_t offset)
 
static bool IsAndImmediate (Instr instr)
 
static bool IsEmittedConstant (Instr instr)
 
static Address target_address_at (Address pc)
 
static void set_target_address_at (Address pc, Address target, WritableJitAllocation *jit_allocation, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)
 
static Address target_address_at (Address pc, Address constant_pool)
 
static void set_target_address_at (Address pc, Address constant_pool, Address target, WritableJitAllocation *jit_allocation, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)
 
static void set_target_value_at (Address pc, uint64_t target, WritableJitAllocation *jit_allocation=nullptr, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)
 
static void JumpLabelToJumpRegister (Address pc)
 
static int deserialization_special_target_size (Address instruction_payload)
 
static void deserialization_set_target_internal_reference_at (Address pc, Address target, WritableJitAllocation &jit_allocation, RelocInfo::Mode mode=RelocInfo::INTERNAL_REFERENCE)
 
static uint32_t uint32_constant_at (Address pc, Address constant_pool)
 
static void set_uint32_constant_at (Address pc, Address constant_pool, uint32_t new_constant, WritableJitAllocation *jit_allocation, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)
 
static int RelocateInternalReference (RelocInfo::Mode rmode, Address pc, intptr_t pc_delta, WritableJitAllocation *jit_allocation=nullptr)
 
static Instr instr_at (Address pc)
 
static void instr_at_put (Address pc, Instr instr, WritableJitAllocation *jit_allocation=nullptr)
 
static bool IsBranch (Instr instr)
 
static bool IsMsaBranch (Instr instr)
 
static bool IsBc (Instr instr)
 
static bool IsNal (Instr instr)
 
static bool IsBzc (Instr instr)
 
static bool IsBeq (Instr instr)
 
static bool IsBne (Instr instr)
 
static bool IsBeqzc (Instr instr)
 
static bool IsBnezc (Instr instr)
 
static bool IsBeqc (Instr instr)
 
static bool IsBnec (Instr instr)
 
static bool IsJump (Instr instr)
 
static bool IsJ (Instr instr)
 
static bool IsLui (Instr instr)
 
static bool IsOri (Instr instr)
 
static bool IsMov (Instr instr, Register rd, Register rs)
 
static bool IsJal (Instr instr)
 
static bool IsJr (Instr instr)
 
static bool IsJalr (Instr instr)
 
static bool IsNop (Instr instr, unsigned int type)
 
static bool IsPop (Instr instr)
 
static bool IsPush (Instr instr)
 
static bool IsLwRegFpOffset (Instr instr)
 
static bool IsSwRegFpOffset (Instr instr)
 
static bool IsLwRegFpNegOffset (Instr instr)
 
static bool IsSwRegFpNegOffset (Instr instr)
 
static Register GetRtReg (Instr instr)
 
static Register GetRsReg (Instr instr)
 
static Register GetRdReg (Instr instr)
 
static uint32_t GetRt (Instr instr)
 
static uint32_t GetRtField (Instr instr)
 
static uint32_t GetRs (Instr instr)
 
static uint32_t GetRsField (Instr instr)
 
static uint32_t GetRd (Instr instr)
 
static uint32_t GetRdField (Instr instr)
 
static uint32_t GetSa (Instr instr)
 
static uint32_t GetSaField (Instr instr)
 
static uint32_t GetOpcodeField (Instr instr)
 
static uint32_t GetFunction (Instr instr)
 
static uint32_t GetFunctionField (Instr instr)
 
static uint32_t GetImmediate16 (Instr instr)
 
static uint32_t GetLabelConst (Instr instr)
 
static int32_t GetBranchOffset (Instr instr)
 
static bool IsLw (Instr instr)
 
static int16_t GetLwOffset (Instr instr)
 
static Instr SetLwOffset (Instr instr, int16_t offset)
 
static bool IsSw (Instr instr)
 
static Instr SetSwOffset (Instr instr, int16_t offset)
 
static bool IsAddImmediate (Instr instr)
 
static Instr SetAddImmediateOffset (Instr instr, int16_t offset)
 
static bool IsAndImmediate (Instr instr)
 
static bool IsEmittedConstant (Instr instr)
 
static bool IsCompactBranchSupported ()
 
static bool IsConstantPoolLoadStart (Address pc, ConstantPoolEntry::Access *access=nullptr)
 
static bool IsConstantPoolLoadEnd (Address pc, ConstantPoolEntry::Access *access=nullptr)
 
static int GetConstantPoolOffset (Address pc, ConstantPoolEntry::Access access, ConstantPoolEntry::Type type)
 
static Address target_constant_pool_address_at (Address pc, Address constant_pool, ConstantPoolEntry::Access access, ConstantPoolEntry::Type type)
 
static Address target_address_at (Address pc, Address constant_pool)
 
static void set_target_address_at (Address pc, Address constant_pool, Address target, WritableJitAllocation *jit_allocation, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)
 
static Tagged_t target_compressed_address_at (Address pc, Address constant_pool)
 
static void set_target_compressed_address_at (Address pc, Address constant_pool, Tagged_t target, WritableJitAllocation *jit_allocation, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)
 
static int deserialization_special_target_size (Address instruction_payload)
 
static void deserialization_set_target_internal_reference_at (Address pc, Address target, WritableJitAllocation &jit_allocation, RelocInfo::Mode mode=RelocInfo::INTERNAL_REFERENCE)
 
static uint32_t uint32_constant_at (Address pc, Address constant_pool)
 
static void set_uint32_constant_at (Address pc, Address constant_pool, uint32_t new_constant, WritableJitAllocation *jit_allocation, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)
 
static int encode_crbit (const CRegister &cr, enum CRBit crbit)
 
static Instr instr_at (Address pc)
 
static void instr_at_put (Address pc, Instr instr)
 
static Condition GetCondition (Instr instr)
 
static bool IsLis (Instr instr)
 
static bool IsLi (Instr instr)
 
static bool IsAddic (Instr instr)
 
static bool IsOri (Instr instr)
 
static bool IsBranch (Instr instr)
 
static Register GetRA (Instr instr)
 
static Register GetRB (Instr instr)
 
static bool Is64BitLoadIntoR12 (Instr instr1, Instr instr2, Instr instr3, Instr instr4, Instr instr5)
 
static bool IsCmpRegister (Instr instr)
 
static bool IsCmpImmediate (Instr instr)
 
static bool IsRlwinm (Instr instr)
 
static bool IsAndi (Instr instr)
 
static bool IsRldicl (Instr instr)
 
static bool IsCrSet (Instr instr)
 
static Register GetCmpImmediateRegister (Instr instr)
 
static int GetCmpImmediateRawImmediate (Instr instr)
 
static bool IsNop (Instr instr, int type=NON_MARKING_NOP)
 
static RegList DefaultTmpList ()
 
static DoubleRegList DefaultFPTmpList ()
 
static int BrachlongOffset (Instr auipc, Instr jalr)
 
static int PatchBranchlongOffset (Address pc, Instr auipc, Instr instr_I, int32_t offset, WritableJitAllocation *jit_allocation=nullptr)
 
static Builtin target_builtin_at (Address pc)
 
static Address target_constant_address_at (Address pc)
 
static Address target_address_at (Address pc, Address constant_pool)
 
static void set_target_address_at (Address pc, Address constant_pool, Address target, WritableJitAllocation *jit_allocation=nullptr, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)
 
static Tagged_t target_compressed_address_at (Address pc, Address constant_pool)
 
static void set_target_compressed_address_at (Address pc, Address constant_pool, Tagged_t target, WritableJitAllocation *jit_allocation=nullptr, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)
 
static bool IsConstantPoolAt (Instruction *instr)
 
static int ConstantPoolSizeAt (Instruction *instr)
 
static int32_t target_constant32_at (Address pc)
 
static void set_target_constant32_at (Address pc, uint32_t target, WritableJitAllocation *jit_allocation, ICacheFlushMode icache_flush_mode)
 
static void JumpLabelToJumpRegister (Address pc)
 
static void deserialization_set_special_target_at (Address location, Tagged< Code > code, Address target)
 
static int deserialization_special_target_size (Address instruction_payload)
 
static void deserialization_set_target_internal_reference_at (Address pc, Address target, WritableJitAllocation &jit_allocation, RelocInfo::Mode mode=RelocInfo::INTERNAL_REFERENCE)
 
static uint32_t uint32_constant_at (Address pc, Address constant_pool)
 
static void set_uint32_constant_at (Address pc, Address constant_pool, uint32_t new_constant, WritableJitAllocation *jit_allocation, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)
 
static int RelocateInternalReference (RelocInfo::Mode rmode, Address pc, intptr_t pc_delta, WritableJitAllocation *jit_allocation=nullptr)
 
static void RelocateRelativeReference (RelocInfo::Mode rmode, Address pc, intptr_t pc_delta, WritableJitAllocation *jit_allocation=nullptr)
 
static Instr instr_at (Address pc)
 
static void instr_at_put (Address pc, Instr instr, WritableJitAllocation *jit_allocation=nullptr)
 
static RegList DefaultTmpList ()
 
static DoubleRegList DefaultFPTmpList ()
 
static Address target_address_at (Address pc, Address constant_pool)
 
static Tagged_t target_compressed_address_at (Address pc, Address constant_pool)
 
static void set_target_address_at (Address pc, Address constant_pool, Address target, WritableJitAllocation *jit_allocation, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)
 
static void set_target_compressed_address_at (Address pc, Address constant_pool, Tagged_t target, WritableJitAllocation *jit_allocation, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)
 
static int deserialization_special_target_size (Address instruction_payload)
 
static void deserialization_set_target_internal_reference_at (Address pc, Address target, WritableJitAllocation &jit_allocation, RelocInfo::Mode mode=RelocInfo::INTERNAL_REFERENCE)
 
static uint32_t uint32_constant_at (Address pc, Address constant_pool)
 
static void set_uint32_constant_at (Address pc, Address constant_pool, uint32_t new_constant, WritableJitAllocation *jit_allocation, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)
 
static SixByteInstr instr_at (uint8_t *pc)
 
static Condition GetCondition (Instr instr)
 
static bool IsBranch (Instr instr)
 
static bool Is64BitLoadIntoIP (SixByteInstr instr1, SixByteInstr instr2)
 
static bool IsCmpRegister (Instr instr)
 
static bool IsCmpImmediate (Instr instr)
 
static bool IsNop (SixByteInstr instr, int type=NON_MARKING_NOP)
 
static Address target_address_at (Address pc, Address constant_pool)
 
static void set_target_address_at (Address pc, Address constant_pool, Address target, WritableJitAllocation *writable_jit_allocation=nullptr, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)
 
static int32_t relative_target_offset (Address target, Address pc)
 
static Builtin target_builtin_at (Address pc)
 
static int deserialization_special_target_size (Address instruction_payload)
 
static void deserialization_set_target_internal_reference_at (Address pc, Address target, WritableJitAllocation &jit_allocation, RelocInfo::Mode mode=RelocInfo::INTERNAL_REFERENCE)
 
static uint32_t uint32_constant_at (Address pc, Address constant_pool)
 
static void set_uint32_constant_at (Address pc, Address constant_pool, uint32_t new_constant, WritableJitAllocation *jit_allocation=nullptr, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)
 
static bool UseConstPoolFor (RelocInfo::Mode rmode)
 
static bool IsNop (Address addr)
 
static bool IsJmpRel (Address addr)
 
- Static Public Member Functions inherited from v8::internal::AssemblerBase
static void QuietNaN (Tagged< HeapObject > nan)
 
- Static Public Member Functions inherited from v8::internal::Malloced
static void * operator new (size_t size)
 
static void operator delete (void *p)
 
- Static Public Member Functions inherited from v8::internal::AssemblerRISCVI
static int JumpOffset (Instr instr)
 
static int AuipcOffset (Instr instr)
 
static int JalrOffset (Instr instr)
 
static int LoadOffset (Instr instr)
 
static bool IsBranch (Instr instr)
 
static bool IsNop (Instr instr)
 
static bool IsJump (Instr instr)
 
static bool IsJal (Instr instr)
 
static bool IsJalr (Instr instr)
 
static bool IsLui (Instr instr)
 
static bool IsAuipc (Instr instr)
 
static bool IsAddi (Instr instr)
 
static bool IsOri (Instr instr)
 
static bool IsSlli (Instr instr)
 
static bool IsLw (Instr instr)
 
- Static Public Member Functions inherited from v8::internal::AssemblerRISCVC
static bool IsCBranch (Instr instr)
 
static bool IsCJal (Instr instr)
 
- Static Public Member Functions inherited from v8::internal::AssemblerRISCVV
static int32_t GenZimm (VSew vsew, Vlmul vlmul, TailAgnosticType tail=tu, MaskAgnosticType mask=mu)
 

Private Member Functions

constexpr int GetFramePointerOffsetForStackSlot (int index)
 
void SmiTagInt32AndSetFlags (Register dst, Register src)
 

Private Attributes

MaglevCodeGenState *const code_gen_state_
 
TemporaryRegisterScopescratch_register_scope_ = nullptr
 

Additional Inherited Members

- Public Attributes inherited from v8::internal::MacroAssembler
 DECLARE_STORE_FUNCTION
 
 St
 
- Public Attributes inherited from v8::internal::Assembler
Simd128Register rt
 
Simd128Register Simd128Register ra
 
Simd128Register Simd128Register Simd128Register rb
 
Simd128Register Simd128Register Simd128Register Simd128Register rc
 
VectorUnit VU
 
 XMMRegister
 
 YMMRegister
 
Operand256 E6
 
Operand256 XMMRegister
 
Operand256 YMMRegister
 
- Public Attributes inherited from v8::internal::AssemblerRISCVV
VRegister vs1
 
- Static Public Attributes inherited from v8::internal::MacroAssembler
static constexpr int kExtraSlotClaimedByPrologue = 1
 
static const int kSwitchTablePrologueSize = 5
 
- Static Public Attributes inherited from v8::internal::Assembler
static constexpr int kNoHandlerTable = 0
 
static constexpr SafepointTableBuilderBasekNoSafepointTable = nullptr
 
static constexpr int kSpecialTargetSize = kPointerSize
 
static constexpr int kMaxDistToPcRelativeConstant
 
static constexpr int kMaxDistToIntPool
 
static constexpr int kTypicalNumPending32Constants = 32
 
static constexpr int kMaxNumPending32Constants
 
static constexpr int kVeneerCodeSize = 1 * kInstrSize
 
static constexpr SafepointTableBuilderkNoSafepointTable = nullptr
 
static constexpr uint8_t kTestAlByte = 0xA8
 
static constexpr uint8_t kNopByte = 0x90
 
static constexpr uint8_t kJmpShortOpcode = 0xEB
 
static constexpr uint8_t kJccShortPrefix = 0x70
 
static constexpr uint8_t kJncShortOpcode = kJccShortPrefix | not_carry
 
static constexpr uint8_t kJcShortOpcode = kJccShortPrefix | carry
 
static constexpr uint8_t kJnzShortOpcode = kJccShortPrefix | not_zero
 
static constexpr uint8_t kJzShortOpcode = kJccShortPrefix | zero
 
static constexpr int kMaximalBufferSize = 512 * MB
 
static constexpr int kInstructionsFor64BitConstant = 4
 
static constexpr int kMax16BranchOffset = (1 << (18 - 1)) - 1
 
static constexpr int kMax21BranchOffset = (1 << (23 - 1)) - 1
 
static constexpr int kMax26BranchOffset = (1 << (28 - 1)) - 1
 
static constexpr int kTrampolineSlotsSize = 2 * kInstrSize
 
static constexpr int kBranchPCOffset = kInstrSize
 
static constexpr int kLongBranchPCOffset = 3 * kInstrSize
 
static constexpr int kOptimizedBranchAndLinkLongReturnOffset = 4 * kInstrSize
 
static constexpr int kInstructionsFor32BitConstant = 2
 
static constexpr int kPcLoadDelta = 4
 
static constexpr int kMaxBranchOffset = (1 << (18 - 1)) - 1
 
static constexpr int kMaxCompactBranchOffset = (1 << (28 - 1)) - 1
 
static constexpr int kMovInstructionsConstantPool = 1
 
static constexpr int kMovInstructionsNoConstantPool = 5
 
static constexpr int kTaggedLoadInstructions = 2
 
static constexpr int kMovInstructions
 
static constexpr int kBranchOffsetBits = 13
 
static constexpr int kJumpOffsetBits = 21
 
static constexpr int kCJalOffsetBits = 12
 
static constexpr int kCBranchOffsetBits = 9
 
static constexpr int kMaxJumpOffset = (1 << (21 - 1)) - 1
 
static constexpr int kBytesForPtrConstant = 12
 
static constexpr uint8_t kTestEaxByte = 0xA9
 
static constexpr int kPushq32InstrSize = 5
 
static constexpr int kIntraSegmentJmpInstrSize = 5
 
- Static Public Attributes inherited from v8::internal::AssemblerBase
static constexpr int kMinimalBufferSize = 128
 
static constexpr int kDefaultBufferSize = 4 * KB
 
- Protected Types inherited from v8::internal::Assembler
enum class  OffsetAccessType : bool { SINGLE_ACCESS = false , TWO_ACCESSES = true , SINGLE_ACCESS = false , TWO_ACCESSES = true }
 
enum class  OffsetAccessType : bool { SINGLE_ACCESS = false , TWO_ACCESSES = true , SINGLE_ACCESS = false , TWO_ACCESSES = true }
 
- Protected Types inherited from v8::internal::AssemblerBase
using EmbeddedObjectIndex = size_t
 
- Protected Types inherited from v8::internal::AssemblerRiscvBase
enum  OffsetSize : int {
  kOffset21 = 21 , kOffset12 = 12 , kOffset20 = 20 , kOffset13 = 13 ,
  kOffset32 = 32 , kOffset11 = 11 , kOffset9 = 9
}
 
- Protected Types inherited from v8::internal::SharedMacroAssemblerBase
template<typename Op >
using AvxFn = void(Assembler::*)(XMMRegister, XMMRegister, Op, uint8_t)
 
template<typename Op >
using NoAvxFn = void(Assembler::*)(XMMRegister, Op, uint8_t)
 
- Protected Member Functions inherited from v8::internal::MacroAssembler
void PushHelper (int count, int size, const CPURegister &src0, const CPURegister &src1, const CPURegister &src2, const CPURegister &src3)
 
void PopHelper (int count, int size, const CPURegister &dst0, const CPURegister &dst1, const CPURegister &dst2, const CPURegister &dst3)
 
void ConditionalCompareMacro (const Register &rn, const Operand &operand, StatusFlags nzcv, Condition cond, ConditionalCompareOp op)
 
void AddSubWithCarryMacro (const Register &rd, const Register &rn, const Operand &operand, FlagsUpdate S, AddSubWithCarryOp op)
 
void CallPrintf (int arg_count=0, const CPURegister *args=nullptr)
 
void DropArguments (Register count)
 
Register GetRkAsRegisterHelper (const Operand &rk, Register scratch)
 
int32_t GetOffset (Label *L, OffsetSize bits)
 
Register GetRtAsRegisterHelper (const Operand &rt, Register scratch)
 
int32_t GetOffset (int32_t offset, Label *L, OffsetSize bits)
 
Register GetRtAsRegisterHelper (const Operand &rt, Register scratch)
 
int32_t GetOffset (int32_t offset, Label *L, OffsetSize bits)
 
Register GetSmiConstant (Tagged< Smi > value)
 
void DropArguments (Register count)
 
- Protected Member Functions inherited from v8::internal::MacroAssemblerBase
 DISALLOW_IMPLICIT_CONSTRUCTORS (MacroAssemblerBase)
 
- Protected Member Functions inherited from v8::internal::Assembler
int buffer_space () const
 
int target_at (int pos)
 
void target_at_put (int pos, int target_pos)
 
void StartBlockConstPool ()
 
void EndBlockConstPool ()
 
bool is_const_pool_blocked () const
 
bool has_pending_constants () const
 
bool VfpRegisterIsAvailable (DwVfpRegister reg)
 
bool VfpRegisterIsAvailable (QwNeonRegister reg)
 
void emit (Instr x)
 
const RegisterAppropriateZeroRegFor (const CPURegister &reg) const
 
void LoadStore (const CPURegister &rt, const MemOperand &addr, LoadStoreOp op)
 
void LoadStoreScaledImmOffset (Instr memop, int offset, unsigned size)
 
void LoadStoreUnscaledImmOffset (Instr memop, int offset)
 
void LoadStoreWRegOffset (Instr memop, const Register &regoffset)
 
void LoadStorePair (const CPURegister &rt, const CPURegister &rt2, const MemOperand &addr, LoadStorePairOp op)
 
void LoadStoreStruct (const VRegister &vt, const MemOperand &addr, NEONLoadStoreMultiStructOp op)
 
void LoadStoreStruct1 (const VRegister &vt, int reg_count, const MemOperand &addr)
 
void LoadStoreStructSingle (const VRegister &vt, uint32_t lane, const MemOperand &addr, NEONLoadStoreSingleStructOp op)
 
void LoadStoreStructSingleAllLanes (const VRegister &vt, const MemOperand &addr, NEONLoadStoreSingleStructOp op)
 
void LoadStoreStructVerify (const VRegister &vt, const MemOperand &addr, Instr op)
 
void Logical (const Register &rd, const Register &rn, const Operand &operand, LogicalOp op)
 
void LogicalImmediate (const Register &rd, const Register &rn, unsigned n, unsigned imm_s, unsigned imm_r, LogicalOp op)
 
void ConditionalCompare (const Register &rn, const Operand &operand, StatusFlags nzcv, Condition cond, ConditionalCompareOp op)
 
void AddSubWithCarry (const Register &rd, const Register &rn, const Operand &operand, FlagsUpdate S, AddSubWithCarryOp op)
 
void EmitShift (const Register &rd, const Register &rn, Shift shift, unsigned amount)
 
void EmitExtendShift (const Register &rd, const Register &rn, Extend extend, unsigned left_shift)
 
void AddSub (const Register &rd, const Register &rn, const Operand &operand, FlagsUpdate S, AddSubOp op)
 
void DataProcPlainRegister (const Register &rd, const Register &rn, const Register &rm, Instr op)
 
void CmpPlainRegister (const Register &rn, const Register &rm)
 
void DataProcImmediate (const Register &rd, const Register &rn, int immediate, Instr op)
 
void RemoveBranchFromLabelLinkChain (Instruction *branch, Label *label, Instruction *label_veneer=nullptr)
 
int unresolved_branches_first_limit () const
 
void emit_sse_operand (XMMRegister reg, Operand adr)
 
void emit_sse_operand (XMMRegister dst, XMMRegister src)
 
void emit_sse_operand (Register dst, XMMRegister src)
 
void emit_sse_operand (XMMRegister dst, Register src)
 
Address addr_at (int pos)
 
void AdjustBaseAndOffset (MemOperand *src)
 
int64_t buffer_space () const
 
int target_at (int pos, bool is_internal)
 
void target_at_put (int pos, int target_pos, bool is_internal)
 
bool MustUseReg (RelocInfo::Mode rmode)
 
void RecordRelocInfo (RelocInfo::Mode rmode, intptr_t data=0)
 
void BlockTrampolinePoolBefore (int pc_offset)
 
void StartBlockTrampolinePool ()
 
void EndBlockTrampolinePool ()
 
bool is_trampoline_pool_blocked () const
 
bool has_exception () const
 
bool is_trampoline_emitted () const
 
void StartBlockGrowBuffer ()
 
void EndBlockGrowBuffer ()
 
bool is_buffer_growth_blocked () const
 
void CheckTrampolinePoolQuick (int extra_instructions=0)
 
void set_pc_for_safepoint ()
 
void lsa (Register rd, Register rt, Register rs, uint8_t sa)
 
void dlsa (Register rd, Register rt, Register rs, uint8_t sa)
 
void AdjustBaseAndOffset (MemOperand *src, OffsetAccessType access_type=OffsetAccessType::SINGLE_ACCESS, int second_access_add_to_offset=4)
 
int64_t buffer_space () const
 
int target_at (int pos, bool is_internal)
 
void target_at_put (int pos, int target_pos, bool is_internal)
 
bool MustUseReg (RelocInfo::Mode rmode)
 
void RecordRelocInfo (RelocInfo::Mode rmode, intptr_t data=0)
 
void BlockTrampolinePoolBefore (int pc_offset)
 
void StartBlockTrampolinePool ()
 
void EndBlockTrampolinePool ()
 
bool is_trampoline_pool_blocked () const
 
bool has_exception () const
 
void StartBlockGrowBuffer ()
 
void EndBlockGrowBuffer ()
 
bool is_buffer_growth_blocked () const
 
void EmitForbiddenSlotInstruction ()
 
void CheckTrampolinePoolQuick (int extra_instructions=0)
 
void set_pc_for_safepoint ()
 
int buffer_space () const
 
int target_at (int pos)
 
void target_at_put (int pos, int target_pos, bool *is_branch=nullptr)
 
void RecordRelocInfo (RelocInfo::Mode rmode, intptr_t data=0)
 
ConstantPoolEntry::Access ConstantPoolAddEntry (RelocInfo::Mode rmode, intptr_t value)
 
ConstantPoolEntry::Access ConstantPoolAddEntry (base::Double value)
 
void BlockTrampolinePoolBefore (int pc_offset)
 
void StartBlockTrampolinePool ()
 
void EndBlockTrampolinePool ()
 
bool is_trampoline_pool_blocked () const
 
void StartBlockConstantPoolEntrySharing ()
 
void EndBlockConstantPoolEntrySharing ()
 
bool is_constant_pool_entry_sharing_blocked () const
 
bool has_exception () const
 
bool is_trampoline_emitted () const
 
bool NeedAdjustBaseAndOffset (const MemOperand &src, OffsetAccessType=OffsetAccessType::SINGLE_ACCESS, int second_Access_add_to_offset=4)
 
void AdjustBaseAndOffset (MemOperand *src, Register scratch, OffsetAccessType access_type=OffsetAccessType::SINGLE_ACCESS, int second_access_add_to_offset=4)
 
intptr_t buffer_space () const
 
int target_at (int pos, bool is_internal)
 
void target_at_put (int pos, int target_pos, bool is_internal)
 
bool MustUseReg (RelocInfo::Mode rmode)
 
void RecordRelocInfo (RelocInfo::Mode rmode, intptr_t data=0)
 
void BlockTrampolinePoolBefore (int pc_offset)
 
void StartBlockTrampolinePool ()
 
void EndBlockTrampolinePool ()
 
bool is_trampoline_pool_blocked () const
 
bool has_exception () const
 
bool is_trampoline_emitted () const
 
void StartBlockGrowBuffer ()
 
void EndBlockGrowBuffer ()
 
bool is_buffer_growth_blocked () const
 
int ConstpoolComputesize ()
 
int buffer_space () const
 
int target_at (int pos)
 
void target_at_put (int pos, int target_pos, bool *is_branch=nullptr)
 
void RecordRelocInfo (RelocInfo::Mode rmode, intptr_t data=0)
 
void call (Operand operand)
 
- Protected Member Functions inherited from v8::internal::AssemblerBase
int AddCodeTarget (IndirectHandle< Code > target)
 
IndirectHandle< CodeGetCodeTarget (intptr_t code_target_index) const
 
EmbeddedObjectIndex AddEmbeddedObject (IndirectHandle< HeapObject > object)
 
IndirectHandle< HeapObjectGetEmbeddedObject (EmbeddedObjectIndex index) const
 
void set_constant_pool_available (bool available)
 
void RequestHeapNumber (HeapNumberRequest request)
 
bool ShouldRecordRelocInfo (RelocInfo::Mode rmode) const
 
- Protected Member Functions inherited from v8::internal::AssemblerRiscvBase
virtual int32_t branch_offset_helper (Label *L, OffsetSize bits)=0
 
void GenInstrR (uint8_t funct7, uint8_t funct3, BaseOpcode opcode, Register rd, Register rs1, Register rs2)
 
void GenInstrR (uint8_t funct7, uint8_t funct3, BaseOpcode opcode, FPURegister rd, FPURegister rs1, FPURegister rs2)
 
void GenInstrR (uint8_t funct7, uint8_t funct3, BaseOpcode opcode, Register rd, FPURegister rs1, Register rs2)
 
void GenInstrR (uint8_t funct7, uint8_t funct3, BaseOpcode opcode, FPURegister rd, Register rs1, Register rs2)
 
void GenInstrR (uint8_t funct7, uint8_t funct3, BaseOpcode opcode, FPURegister rd, FPURegister rs1, Register rs2)
 
void GenInstrR (uint8_t funct7, uint8_t funct3, BaseOpcode opcode, Register rd, FPURegister rs1, FPURegister rs2)
 
void GenInstrR4 (uint8_t funct2, BaseOpcode opcode, Register rd, Register rs1, Register rs2, Register rs3, FPURoundingMode frm)
 
void GenInstrR4 (uint8_t funct2, BaseOpcode opcode, FPURegister rd, FPURegister rs1, FPURegister rs2, FPURegister rs3, FPURoundingMode frm)
 
void GenInstrRAtomic (uint8_t funct5, bool aq, bool rl, uint8_t funct3, Register rd, Register rs1, Register rs2)
 
void GenInstrRFrm (uint8_t funct7, BaseOpcode opcode, Register rd, Register rs1, Register rs2, FPURoundingMode frm)
 
void GenInstrI (uint8_t funct3, BaseOpcode opcode, Register rd, Register rs1, int16_t imm12)
 
void GenInstrI (uint8_t funct3, BaseOpcode opcode, FPURegister rd, Register rs1, int16_t imm12)
 
void GenInstrIShift (uint8_t funct7, uint8_t funct3, BaseOpcode opcode, Register rd, Register rs1, uint8_t shamt)
 
void GenInstrIShiftW (uint8_t funct7, uint8_t funct3, BaseOpcode opcode, Register rd, Register rs1, uint8_t shamt)
 
void GenInstrS (uint8_t funct3, BaseOpcode opcode, Register rs1, Register rs2, int16_t imm12)
 
void GenInstrS (uint8_t funct3, BaseOpcode opcode, Register rs1, FPURegister rs2, int16_t imm12)
 
void GenInstrB (uint8_t funct3, BaseOpcode opcode, Register rs1, Register rs2, int16_t imm12)
 
void GenInstrU (BaseOpcode opcode, Register rd, int32_t imm20)
 
void GenInstrJ (BaseOpcode opcode, Register rd, int32_t imm20)
 
void GenInstrCR (uint8_t funct4, BaseOpcode opcode, Register rd, Register rs2)
 
void GenInstrCA (uint8_t funct6, BaseOpcode opcode, Register rd, uint8_t funct, Register rs2)
 
void GenInstrCI (uint8_t funct3, BaseOpcode opcode, Register rd, int8_t imm6)
 
void GenInstrCIU (uint8_t funct3, BaseOpcode opcode, Register rd, uint8_t uimm6)
 
void GenInstrCIU (uint8_t funct3, BaseOpcode opcode, FPURegister rd, uint8_t uimm6)
 
void GenInstrCIW (uint8_t funct3, BaseOpcode opcode, Register rd, uint8_t uimm8)
 
void GenInstrCSS (uint8_t funct3, BaseOpcode opcode, FPURegister rs2, uint8_t uimm6)
 
void GenInstrCSS (uint8_t funct3, BaseOpcode opcode, Register rs2, uint8_t uimm6)
 
void GenInstrCL (uint8_t funct3, BaseOpcode opcode, Register rd, Register rs1, uint8_t uimm5)
 
void GenInstrCL (uint8_t funct3, BaseOpcode opcode, FPURegister rd, Register rs1, uint8_t uimm5)
 
void GenInstrCS (uint8_t funct3, BaseOpcode opcode, Register rs2, Register rs1, uint8_t uimm5)
 
void GenInstrCS (uint8_t funct3, BaseOpcode opcode, FPURegister rs2, Register rs1, uint8_t uimm5)
 
void GenInstrCJ (uint8_t funct3, BaseOpcode opcode, uint16_t uint11)
 
void GenInstrCB (uint8_t funct3, BaseOpcode opcode, Register rs1, uint8_t uimm8)
 
void GenInstrCBA (uint8_t funct3, uint8_t funct2, BaseOpcode opcode, Register rs1, int8_t imm6)
 
void GenInstrBranchCC_rri (uint8_t funct3, Register rs1, Register rs2, int16_t imm12)
 
void GenInstrLoad_ri (uint8_t funct3, Register rd, Register rs1, int16_t imm12)
 
void GenInstrStore_rri (uint8_t funct3, Register rs1, Register rs2, int16_t imm12)
 
void GenInstrALU_ri (uint8_t funct3, Register rd, Register rs1, int16_t imm12)
 
void GenInstrShift_ri (bool arithshift, uint8_t funct3, Register rd, Register rs1, uint8_t shamt)
 
void GenInstrALU_rr (uint8_t funct7, uint8_t funct3, Register rd, Register rs1, Register rs2)
 
void GenInstrCSR_ir (uint8_t funct3, Register rd, ControlStatusReg csr, Register rs1)
 
void GenInstrCSR_ii (uint8_t funct3, Register rd, ControlStatusReg csr, uint8_t rs1)
 
void GenInstrShiftW_ri (bool arithshift, uint8_t funct3, Register rd, Register rs1, uint8_t shamt)
 
void GenInstrALUW_rr (uint8_t funct7, uint8_t funct3, Register rd, Register rs1, Register rs2)
 
void GenInstrPriv (uint8_t funct7, Register rs1, Register rs2)
 
void GenInstrLoadFP_ri (uint8_t funct3, FPURegister rd, Register rs1, int16_t imm12)
 
void GenInstrStoreFP_rri (uint8_t funct3, Register rs1, FPURegister rs2, int16_t imm12)
 
void GenInstrALUFP_rr (uint8_t funct7, uint8_t funct3, FPURegister rd, FPURegister rs1, FPURegister rs2)
 
void GenInstrALUFP_rr (uint8_t funct7, uint8_t funct3, FPURegister rd, Register rs1, Register rs2)
 
void GenInstrALUFP_rr (uint8_t funct7, uint8_t funct3, FPURegister rd, FPURegister rs1, Register rs2)
 
void GenInstrALUFP_rr (uint8_t funct7, uint8_t funct3, Register rd, FPURegister rs1, Register rs2)
 
void GenInstrALUFP_rr (uint8_t funct7, uint8_t funct3, Register rd, FPURegister rs1, FPURegister rs2)
 
- Protected Member Functions inherited from v8::internal::AssemblerRISCVV
void vsetvli (Register rd, Register rs1, VSew vsew, Vlmul vlmul, TailAgnosticType tail=tu, MaskAgnosticType mask=mu)
 
void vsetivli (Register rd, uint8_t uimm, VSew vsew, Vlmul vlmul, TailAgnosticType tail=tu, MaskAgnosticType mask=mu)
 
void vsetvlmax (Register rd, VSew vsew, Vlmul vlmul, TailAgnosticType tail=tu, MaskAgnosticType mask=mu)
 
void vsetvl (VSew vsew, Vlmul vlmul, TailAgnosticType tail=tu, MaskAgnosticType mask=mu)
 
void vsetvl (Register rd, Register rs1, Register rs2)
 
void GenInstrV (Register rd, Register rs1, Register rs2)
 
void GenInstrV (Register rd, Register rs1, uint32_t zimm)
 
void GenInstrV (uint8_t funct6, Opcode opcode, VRegister vd, VRegister vs1, VRegister vs2, MaskType mask=NoMask)
 
void GenInstrV (uint8_t funct6, Opcode opcode, VRegister vd, int8_t vs1, VRegister vs2, MaskType mask=NoMask)
 
void GenInstrV (uint8_t funct6, Opcode opcode, VRegister vd, VRegister vs2, MaskType mask=NoMask)
 
void GenInstrV (uint8_t funct6, Opcode opcode, Register rd, VRegister vs1, VRegister vs2, MaskType mask=NoMask)
 
void GenInstrV (uint8_t funct6, Opcode opcode, FPURegister fd, VRegister vs1, VRegister vs2, MaskType mask=NoMask)
 
void GenInstrV (uint8_t funct6, Opcode opcode, VRegister vd, Register rs1, VRegister vs2, MaskType mask=NoMask)
 
void GenInstrV (uint8_t funct6, Opcode opcode, VRegister vd, FPURegister fs1, VRegister vs2, MaskType mask=NoMask)
 
void GenInstrV (uint8_t funct6, Register rd, Register rs1, VRegister vs2, MaskType mask=NoMask)
 
void GenInstrV (uint8_t funct6, VRegister vd, int8_t simm5, VRegister vs2, MaskType mask=NoMask)
 
void GenInstrV (BaseOpcode opcode, uint8_t width, VRegister vd, Register rs1, uint8_t umop, MaskType mask, uint8_t IsMop, bool IsMew, uint8_t Nf)
 
void GenInstrV (BaseOpcode opcode, uint8_t width, VRegister vd, Register rs1, Register rs2, MaskType mask, uint8_t IsMop, bool IsMew, uint8_t Nf)
 
void GenInstrV (BaseOpcode opcode, uint8_t width, VRegister vd, Register rs1, VRegister vs2, MaskType mask, uint8_t IsMop, bool IsMew, uint8_t Nf)
 
void GenInstrV (uint8_t funct6, Opcode opcode, Register rd, uint8_t vs1, VRegister vs2, MaskType mask)
 
- Protected Member Functions inherited from v8::internal::SharedMacroAssemblerBase
template<typename Op >
void PinsrHelper (Assembler *assm, AvxFn< Op > avx, NoAvxFn< Op > noavx, XMMRegister dst, XMMRegister src1, Op src2, uint8_t imm8, uint32_t *load_pc_offset=nullptr, std::optional< CpuFeature > feature=std::nullopt)
 
- Static Protected Member Functions inherited from v8::internal::Assembler
static bool IsImmLSPair (int64_t offset, unsigned size)
 
static bool IsImmFP32 (uint32_t bits)
 
static bool IsImmFP64 (uint64_t bits)
 
static LoadStoreOp LoadOpFor (const CPURegister &rt)
 
static LoadStorePairOp LoadPairOpFor (const CPURegister &rt, const CPURegister &rt2)
 
static LoadStoreOp StoreOpFor (const CPURegister &rt)
 
static LoadStorePairOp StorePairOpFor (const CPURegister &rt, const CPURegister &rt2)
 
static LoadLiteralOp LoadLiteralOpFor (const CPURegister &rt)
 
static void set_target_internal_reference_encoded_at (Address pc, Address target)
 
static void set_target_internal_reference_encoded_at (Address pc, Address target, WritableJitAllocation &jit_allocation)
 
static void set_target_internal_reference_encoded_at (Address pc, Address target)
 
- Protected Attributes inherited from v8::internal::MacroAssemblerBase
Isolate *const isolate_ = nullptr
 
IndirectHandle< HeapObjectcode_object_
 
bool root_array_available_ = true
 
bool hard_abort_ = false
 
bool has_frame_ = false
 
CodeSandboxingMode sandboxing_mode_ = CodeSandboxingMode::kSandboxed
 
Builtin maybe_builtin_ = Builtin::kNoBuiltinId
 
int comment_depth_ = 0
 
- Protected Attributes inherited from v8::internal::Assembler
RelocInfoWriter reloc_info_writer
 
base::SmallVector< ConstantPoolEntry, kTypicalNumPending32Constantspending_32_bit_constants_
 
RegList scratch_register_list_
 
VfpRegList scratch_vfp_register_list_
 
const AssemblerZone zone_
 
ZoneAbslBTreeMap< int, Label * > unresolved_branches_
 
absl::flat_hash_map< int, intbranch_link_chain_back_edge_
 
int next_veneer_pool_check_
 
JumpTableInfoWriter jump_table_info_writer_
 
- Protected Attributes inherited from v8::internal::AssemblerBase
std::unique_ptr< AssemblerBufferbuffer_
 
uint8_t * buffer_start_
 
std::forward_list< HeapNumberRequestheap_number_requests_
 
uint8_t * pc_
 
CodeCommentsWriter code_comments_writer_
 
- Static Protected Attributes inherited from v8::internal::Assembler
static constexpr int kGap = 32
 
static constexpr int kMaxRelocSize = RelocInfoWriter::kMaxSize
 
static constexpr int kVeneerDistanceMargin = 1 * KB
 
static constexpr int kVeneerNoProtectionFactor = 2
 
static constexpr int kVeneerDistanceCheckMargin
 

Detailed Description

Definition at line 96 of file maglev-assembler.h.

Member Typedef Documentation

◆ OffsetTypeFor

template<StoreMode store_mode>
using v8::internal::maglev::MaglevAssembler::OffsetTypeFor = std::conditional_t<store_mode == kField, int, Register>

Definition at line 227 of file maglev-assembler.h.

Member Enumeration Documentation

◆ CharCodeMaskMode

Enumerator
kValueIsInRange 
kMustApplyMask 

Definition at line 287 of file maglev-assembler.h.

287 { kValueIsInRange, kMustApplyMask };

◆ StoreMode

◆ ValueCanBeSmi

◆ ValueIsCompressed

Constructor & Destructor Documentation

◆ MaglevAssembler()

v8::internal::maglev::MaglevAssembler::MaglevAssembler ( Isolate isolate,
Zone zone,
MaglevCodeGenState code_gen_state 
)
inline

Definition at line 100 of file maglev-assembler.h.

Member Function Documentation

◆ AddInt32()

void v8::internal::maglev::MaglevAssembler::AddInt32 ( Register  reg,
int  amount 
)
inline

Definition at line 489 of file maglev-assembler-arm-inl.h.

489  {
490  add(reg, reg, Operand(amount));
491 }
void add(Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)

References v8::internal::Assembler::add().

+ Here is the call graph for this function:

◆ Allocate() [1/2]

void v8::internal::maglev::MaglevAssembler::Allocate ( RegisterSnapshot  register_snapshot,
Register  result,
int  size_in_bytes,
AllocationType  alloc_type = AllocationType::kYoung,
AllocationAlignment  alignment = kTaggedAligned 
)

Definition at line 67 of file maglev-assembler-arm.cc.

70  {
71  AllocateRaw(this, isolate_, register_snapshot, object, size_in_bytes,
72  alloc_type, alignment);
73 }
void AllocateRaw(MaglevAssembler *masm, Isolate *isolate, RegisterSnapshot register_snapshot, Register object, T size_in_bytes, AllocationType alloc_type, AllocationAlignment alignment)

References v8::internal::maglev::AllocateRaw(), and v8::internal::MacroAssemblerBase::isolate_.

Referenced by AllocateHeapNumber(), and AllocateTwoByteString().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Allocate() [2/2]

void v8::internal::maglev::MaglevAssembler::Allocate ( RegisterSnapshot  register_snapshot,
Register  result,
Register  size_in_bytes,
AllocationType  alloc_type = AllocationType::kYoung,
AllocationAlignment  alignment = kTaggedAligned 
)

Definition at line 75 of file maglev-assembler-arm.cc.

78  {
79  AllocateRaw(this, isolate_, register_snapshot, object, size_in_bytes,
80  alloc_type, alignment);
81 }

References v8::internal::maglev::AllocateRaw(), and v8::internal::MacroAssemblerBase::isolate_.

+ Here is the call graph for this function:

◆ AllocateHeapNumber()

void v8::internal::maglev::MaglevAssembler::AllocateHeapNumber ( RegisterSnapshot  register_snapshot,
Register  result,
DoubleRegister  value 
)

Definition at line 19 of file maglev-assembler.cc.

21  {
22  // In the case we need to call the runtime, we should spill the value
23  // register. Even if it is not live in the next node, otherwise the
24  // allocation call might trash it.
25  register_snapshot.live_double_registers.set(value);
26  Allocate(register_snapshot, result, sizeof(HeapNumber));
27  SetMapAsRoot(result, RootIndex::kHeapNumberMap);
28  StoreFloat64(FieldMemOperand(result, offsetof(HeapNumber, value_)), value);
29 }
void Allocate(RegisterSnapshot register_snapshot, Register result, int size_in_bytes, AllocationType alloc_type=AllocationType::kYoung, AllocationAlignment alignment=kTaggedAligned)
void SetMapAsRoot(Register object, RootIndex map)
void StoreFloat64(MemOperand dst, DoubleRegister src)
MemOperand FieldMemOperand(Register object, int offset)
return value
Definition: map-inl.h:912

References Allocate(), v8::internal::FieldMemOperand(), v8::internal::maglev::RegisterSnapshot::live_double_registers, v8::base::internal::result, v8::internal::RegListBase< RegisterT >::set(), SetMapAsRoot(), StoreFloat64(), and v8::internal::value.

+ Here is the call graph for this function:

◆ AllocateTwoByteString()

void v8::internal::maglev::MaglevAssembler::AllocateTwoByteString ( RegisterSnapshot  register_snapshot,
Register  result,
int  length 
)

Definition at line 31 of file maglev-assembler.cc.

32  {
34  Allocate(register_snapshot, result, size);
36  SetMapAsRoot(result, RootIndex::kSeqTwoByteStringMap);
37  StoreInt32Field(result, offsetof(Name, raw_hash_field_),
39  StoreInt32Field(result, offsetof(String, length_), length);
40 }
static constexpr int kEmptyHashField
Definition: name.h:133
static constexpr int32_t SizeFor(int32_t length)
Definition: string-inl.h:1364
static constexpr Tagged< Smi > zero()
Definition: smi.h:99
void StoreTaggedSignedField(Register object, int offset, Register value)
void StoreInt32Field(Register object, int offset, int32_t value)
too high values may cause the compiler to set high thresholds for inlining to as much as possible avoid inlined allocation of objects that cannot escape trace load stores from virtual maglev objects use TurboFan fast string builder analyze liveness of environment slots and zap dead values trace TurboFan load elimination emit data about basic block usage in builtins to this enable builtin reordering when run mksnapshot flag for emit warnings when applying builtin profile data verify register allocation in TurboFan randomly schedule instructions to stress dependency tracking enable store store elimination in TurboFan rewrite far to near simulate GC compiler thread race related to allow float parameters to be passed in simulator mode JS Wasm Run additional turbo_optimize_inlined_js_wasm_wrappers enables Turboshaft s StaticAssert and CheckTurboshaftTypeOf operations Wasm code into JS functions via the JS to Wasm wrappers are still inlined in TurboFan For controlling whether to at see turbo inline js wasm calls enable Turboshaft s loop unrolling enable an additional Turboshaft phase that performs optimizations based on type information enable Turbolev features that we want to ship in the not too far future trace individual Turboshaft reduction steps trace intermediate Turboshaft reduction steps trace Turboshaft s if else to switch reducer invocation count threshold for early optimization Enables optimizations which favor memory size over execution speed Enables sampling allocation profiler with X as a sample interval min size of a semi the new space consists of two semi spaces max size of the preconfigured old space size(in Mbytes)") DEFINE_INT(random_gc_interval
constexpr intptr_t kObjectAlignment
Definition: globals.h:924
v8_inspector::String16 String
Definition: string-util.h:26

References Allocate(), v8::internal::Name::kEmptyHashField, v8::internal::kObjectAlignment, v8::internal::length, v8::base::internal::result, SetMapAsRoot(), size(), v8::internal::SeqTwoByteString::SizeFor(), StoreInt32Field(), StoreTaggedSignedField(), and v8::internal::Smi::zero().

Referenced by StringFromCharCode().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ AndInt32() [1/2]

void v8::internal::maglev::MaglevAssembler::AndInt32 ( Register  reg,
int  mask 
)
inline

Definition at line 493 of file maglev-assembler-arm-inl.h.

493  {
494  and_(reg, reg, Operand(mask));
495 }
void and_(Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)

References v8::internal::Assembler::and_().

Referenced by JumpIfSeqOneByteStringMap(), and SeqOneByteStringCharCodeAt().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ AndInt32() [2/2]

void v8::internal::maglev::MaglevAssembler::AndInt32 ( Register  reg,
Register  other 
)
inline

Definition at line 501 of file maglev-assembler-arm-inl.h.

501  {
502  and_(reg, reg, other);
503 }

References v8::internal::Assembler::and_().

+ Here is the call graph for this function:

◆ AssertContextCellState()

void v8::internal::maglev::MaglevAssembler::AssertContextCellState ( Register  cell,
ContextCell::State  state,
Condition  condition = kEqual 
)
inline

Definition at line 289 of file maglev-assembler-inl.h.

291  {
292  if (!v8_flags.slow_debug_code) return;
293  TemporaryRegisterScope temps(this);
294  Register scratch = temps.AcquireScratch();
295  LoadContextCellState(scratch, cell);
296  CompareInt32AndAssert(scratch, static_cast<int>(state), condition,
297  AbortReason::kUnexpectedValue);
298 }
void CompareInt32AndAssert(Register r1, Register r2, Condition cond, AbortReason reason)
void LoadContextCellState(Register state, Register cell)
V8_EXPORT_PRIVATE FlagValues v8_flags

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), CompareInt32AndAssert(), LoadContextCellState(), and v8::internal::v8_flags.

Referenced by LoadContextCellFloat64Value(), LoadContextCellInt32Value(), and LoadContextCellTaggedValue().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ AssertElidedWriteBarrier()

void v8::internal::maglev::MaglevAssembler::AssertElidedWriteBarrier ( Register  object,
Register  value,
RegisterSnapshot  snapshot 
)
inline

Definition at line 1109 of file maglev-assembler-inl.h.

1110  {
1111 #if defined(V8_ENABLE_DEBUG_CODE) && !V8_DISABLE_WRITE_BARRIERS_BOOL
1112  if (!v8_flags.slow_debug_code) return;
1113 
1114  ZoneLabelRef ok(this);
1115  Label* deferred_write_barrier_check = MakeDeferredCode(
1116  [](MaglevAssembler* masm, ZoneLabelRef ok, Register object,
1117  Register value, RegisterSnapshot snapshot) {
1118  masm->set_allow_call(true);
1119  {
1120  SaveRegisterStateForCall save_register_state(masm, snapshot);
1121 #ifdef V8_COMPRESS_POINTERS
1122  masm->DecompressTagged(object, object);
1123  masm->DecompressTagged(value, value);
1124 #endif
1125  masm->Push(object, value);
1126  masm->Move(kContextRegister, masm->native_context().object());
1127  masm->CallRuntime(Runtime::kCheckNoWriteBarrierNeeded, 2);
1128  }
1129  masm->set_allow_call(false);
1130  masm->Jump(*ok);
1131  },
1132  ok, object, value, snapshot);
1133 
1134  JumpIfNotSmi(value, deferred_write_barrier_check);
1135  bind(*ok);
1136 #endif // V8_ENABLE_DEBUG_CODE && !V8_DISABLE_WRITE_BARRIERS
1137 }
MaglevAssembler(Isolate *isolate, Zone *zone, MaglevCodeGenState *code_gen_state)
Label * MakeDeferredCode(Function &&deferred_code_gen, Args &&... args)
void JumpIfNotSmi(Register src, Label *on_not_smi, Label::Distance near_jump=Label::kFar)
constexpr Register kContextRegister
Definition: register-arm.h:312

References v8::internal::Assembler::bind(), CallRuntime(), v8::internal::MacroAssembler::DecompressTagged(), Jump(), JumpIfNotSmi(), v8::internal::kContextRegister, MakeDeferredCode(), Move(), native_context(), v8::internal::compiler::NativeContextRef::object(), Push(), v8::internal::v8_flags, and v8::internal::value.

+ Here is the call graph for this function:

◆ AssertObjectType()

void v8::internal::maglev::MaglevAssembler::AssertObjectType ( Register  heap_object,
InstanceType  type,
AbortReason  reason 
)
inline

Definition at line 760 of file maglev-assembler-arm-inl.h.

762  {
763  TemporaryRegisterScope temps(this);
764  Register scratch = temps.AcquireScratch();
765  AssertNotSmi(heap_object);
766  CompareObjectType(heap_object, scratch, scratch, type);
767  Assert(kEqual, reason);
768 }
void AssertNotSmi(Register object, AbortReason reason=AbortReason::kOperandIsASmi) NOOP_UNLESS_DEBUG_CODE
void CompareObjectType(Register heap_object, Register map, Register type_reg, InstanceType type)
void Assert(Condition cond, AbortReason reason) NOOP_UNLESS_DEBUG_CODE
unsigned char * type
Definition: trace-event.h:457

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::MacroAssembler::Assert(), v8::internal::MacroAssembler::AssertNotSmi(), v8::internal::MacroAssembler::CompareObjectType(), v8::internal::kEqual, and v8::internal::tracing::type.

Referenced by LoadFixedArrayElement(), LoadFixedDoubleArrayElement(), and StoreFixedArrayElementWithWriteBarrier().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ AssertObjectTypeInRange()

void v8::internal::maglev::MaglevAssembler::AssertObjectTypeInRange ( Register  heap_object,
InstanceType  lower_limit,
InstanceType  higher_limit,
AbortReason  reason 
)
inline

Definition at line 803 of file maglev-assembler-arm-inl.h.

806  {
807  TemporaryRegisterScope temps(this);
808  Register scratch = temps.AcquireScratch();
809  AssertNotSmi(heap_object);
810  CompareObjectTypeRange(heap_object, scratch, scratch, scratch, lower_limit,
811  higher_limit);
813 }
void CompareObjectTypeRange(Register heap_object, Register map, Register type_reg, Register scratch, InstanceType lower_limit, InstanceType higher_limit)

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::MacroAssembler::Assert(), v8::internal::MacroAssembler::AssertNotSmi(), v8::internal::MacroAssembler::CompareObjectTypeRange(), and v8::internal::kUnsignedLessThanEqual.

Referenced by StringCharCodeOrCodePointAt(), and StringLength().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ AssertStackSizeCorrect()

void v8::internal::maglev::MaglevAssembler::AssertStackSizeCorrect ( )
inline

Definition at line 1288 of file maglev-assembler-arm-inl.h.

1288  {
1289  if (v8_flags.slow_debug_code) {
1290  TemporaryRegisterScope temps(this);
1291  Register scratch = temps.AcquireScratch();
1292  add(scratch, sp,
1293  Operand(code_gen_state()->stack_slots() * kSystemPointerSize +
1295  cmp(scratch, fp);
1296  Assert(eq, AbortReason::kStackAccessBelowStackPointer);
1297  }
1298 }
void cmp(Register src1, const Operand &src2, Condition cond=al)
static constexpr int kFixedFrameSizeFromFp
constexpr int kSystemPointerSize
Definition: globals.h:411

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::Assembler::add(), v8::internal::MacroAssembler::Assert(), v8::internal::Assembler::cmp(), code_gen_state(), v8::internal::eq, v8::internal::StandardFrameConstants::kFixedFrameSizeFromFp, v8::internal::kSystemPointerSize, and v8::internal::v8_flags.

+ Here is the call graph for this function:

◆ BindBlock()

void v8::internal::maglev::MaglevAssembler::BindBlock ( BasicBlock block)
inline

Definition at line 215 of file maglev-assembler-arm-inl.h.

215  {
216  bind(block->label());
217 }

References v8::internal::Assembler::bind(), and v8::internal::maglev::BasicBlock::label().

+ Here is the call graph for this function:

◆ BindJumpTarget()

void v8::internal::maglev::MaglevAssembler::BindJumpTarget ( Label label)
inline

Definition at line 213 of file maglev-assembler-arm-inl.h.

213 { bind(label); }

References v8::internal::Assembler::bind().

Referenced by v8::internal::maglev::MaglevCodeGenerator::EmitCode().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Branch() [1/2]

void v8::internal::maglev::MaglevAssembler::Branch ( Condition  condition,
BasicBlock if_true,
BasicBlock if_false,
BasicBlock next_block 
)
inline

Definition at line 395 of file maglev-assembler-inl.h.

397  {
398  Branch(condition, if_true->label(), Label::kFar, if_true == next_block,
399  if_false->label(), Label::kFar, if_false == next_block);
400 }
void Branch(Condition condition, BasicBlock *if_true, BasicBlock *if_false, BasicBlock *next_block)

References v8::internal::Label::kFar, and v8::internal::maglev::BasicBlock::label().

Referenced by BranchOnObjectType(), BranchOnObjectTypeInRange(), CompareFloat64AndBranch(), CompareInt32AndBranch(), CompareIntPtrAndBranch(), and TestTypeOf().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Branch() [2/2]

void v8::internal::maglev::MaglevAssembler::Branch ( Condition  condition,
Label if_true,
Label::Distance  true_distance,
bool  fallthrough_when_true,
Label if_false,
Label::Distance  false_distance,
bool  fallthrough_when_false 
)
inline

Definition at line 402 of file maglev-assembler-inl.h.

406  {
407  if (fallthrough_when_false) {
408  if (fallthrough_when_true) {
409  // If both paths are a fallthrough, do nothing.
410  DCHECK_EQ(if_true, if_false);
411  return;
412  }
413  // Jump over the false block if true, otherwise fall through into it.
414  JumpIf(condition, if_true, true_distance);
415  } else {
416  // Jump to the false block if true.
417  JumpIf(NegateCondition(condition), if_false, false_distance);
418  // Jump to the true block if it's not the next block.
419  if (!fallthrough_when_true) {
420  Jump(if_true, true_distance);
421  }
422  }
423 }
void Jump(Label *target, Label::Distance distance=Label::kFar)
void JumpIf(Condition cond, Label *target, Label::Distance distance=Label::kFar)
Condition NegateCondition(Condition cond)
#define DCHECK_EQ(v1, v2)
Definition: logging.h:484

References DCHECK_EQ, Jump(), JumpIf(), and v8::internal::NegateCondition().

+ Here is the call graph for this function:

◆ BranchOnObjectType()

void v8::internal::maglev::MaglevAssembler::BranchOnObjectType ( Register  heap_object,
InstanceType  type,
Label if_true,
Label::Distance  true_distance,
bool  fallthrough_when_true,
Label if_false,
Label::Distance  false_distance,
bool  fallthrough_when_false 
)
inline

Definition at line 770 of file maglev-assembler-arm-inl.h.

773  {
774  TemporaryRegisterScope temps(this);
775  Register scratch = temps.AcquireScratch();
776  CompareObjectType(heap_object, scratch, scratch, type);
777  Branch(kEqual, if_true, true_distance, fallthrough_when_true, if_false,
778  false_distance, fallthrough_when_false);
779 }

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), Branch(), v8::internal::MacroAssembler::CompareObjectType(), v8::internal::kEqual, and v8::internal::tracing::type.

Referenced by TestTypeOf().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ BranchOnObjectTypeInRange()

void v8::internal::maglev::MaglevAssembler::BranchOnObjectTypeInRange ( Register  heap_object,
InstanceType  lower_limit,
InstanceType  higher_limit,
Label if_true,
Label::Distance  true_distance,
bool  fallthrough_when_true,
Label if_false,
Label::Distance  false_distance,
bool  fallthrough_when_false 
)
inline

Definition at line 815 of file maglev-assembler-arm-inl.h.

819  {
820  TemporaryRegisterScope temps(this);
821  Register scratch = temps.AcquireScratch();
822  CompareObjectTypeRange(heap_object, scratch, scratch, scratch, lower_limit,
823  higher_limit);
824  Branch(kUnsignedLessThanEqual, if_true, true_distance, fallthrough_when_true,
825  if_false, false_distance, fallthrough_when_false);
826 }

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), Branch(), v8::internal::MacroAssembler::CompareObjectTypeRange(), and v8::internal::kUnsignedLessThanEqual.

Referenced by CheckJSAnyIsStringAndBranch().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ BuildTypedArrayDataPointer()

void v8::internal::maglev::MaglevAssembler::BuildTypedArrayDataPointer ( Register  data_pointer,
Register  object 
)
inline

Definition at line 301 of file maglev-assembler-arm-inl.h.

302  {
303  DCHECK_NE(data_pointer, object);
304  ldr(data_pointer,
305  FieldMemOperand(object, JSTypedArray::kExternalPointerOffset));
306  if (JSTypedArray::kMaxSizeInHeap == 0) return;
307  TemporaryRegisterScope temps(this);
308  Register base = temps.AcquireScratch();
309  ldr(base, FieldMemOperand(object, JSTypedArray::kBasePointerOffset));
310  add(data_pointer, data_pointer, base);
311 }
void ldr(Register dst, const MemOperand &src, Condition cond=al)
static constexpr size_t kMaxSizeInHeap
#define DCHECK_NE(v1, v2)
Definition: logging.h:485

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::Assembler::add(), DCHECK_NE, v8::internal::FieldMemOperand(), v8::internal::JSTypedArray::kMaxSizeInHeap, and v8::internal::Assembler::ldr().

+ Here is the call graph for this function:

◆ Call()

void v8::internal::maglev::MaglevAssembler::Call ( Label target)
inline

Definition at line 522 of file maglev-assembler-arm-inl.h.

522 { bl(target); }
void bl(int branch_offset, Condition cond=al, RelocInfo::Mode rmode=RelocInfo::NO_INFO)

References v8::internal::Assembler::bl().

+ Here is the call graph for this function:

◆ CallBuiltin() [1/2]

template<Builtin kBuiltin, typename... Args>
void v8::internal::maglev::MaglevAssembler::CallBuiltin ( Args &&...  args)
inline

Definition at line 779 of file maglev-assembler-inl.h.

779  {
780  ASM_CODE_COMMENT(this);
781  detail::MoveArgumentsForBuiltin<kBuiltin>(this, std::forward<Args>(args)...);
782  CallBuiltin(kBuiltin);
783 }
#define ASM_CODE_COMMENT(asm)
Definition: assembler.h:617
V8_BASE_EXPORT int const char va_list args
Definition: strings.h:23

References v8::base::args, ASM_CODE_COMMENT, and CallBuiltin().

+ Here is the call graph for this function:

◆ CallBuiltin() [2/2]

void v8::internal::maglev::MaglevAssembler::CallBuiltin ( Builtin  builtin)
inline

Definition at line 752 of file maglev-assembler-inl.h.

752  {
753  // Special case allowing calls to DoubleToI, which takes care to preserve all
754  // registers and therefore doesn't require special spill handling.
755  DCHECK(allow_call() || builtin == Builtin::kDoubleToI);
756 
757  DCHECK_IMPLIES(!allow_allocate(), builtin == Builtin::kDoubleToI ||
759 
760  // Temporaries have to be reset before calling CallBuiltin, in case it uses
761  // temporaries that alias register parameters.
762  TemporaryRegisterScope reset_temps(this);
763  reset_temps.ResetToDefault();
764 
765  // Make sure that none of the register parameters alias the default
766  // temporaries.
767 #ifdef DEBUG
768  CallInterfaceDescriptor descriptor =
770  for (int i = 0; i < descriptor.GetRegisterParameterCount(); ++i) {
771  DCHECK(!reset_temps.Available().has(descriptor.GetRegisterParameter(i)));
772  }
773 #endif
774 
776 }
static CallInterfaceDescriptor CallInterfaceDescriptorFor(Builtin builtin)
Definition: builtins.cc:189
void CallBuiltin(Builtin builtin, Condition cond=al)
DCHECK(IsNull(value)||IsNativeContext(value)||value==Smi::uninitialized_deserialization_value())
bool BuiltinCanAllocate(Builtin builtin)
#define DCHECK_IMPLIES(v1, v2)
Definition: logging.h:492

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScopeBase< Derived >::Available(), v8::internal::MacroAssemblerBase::builtin(), v8::internal::BuiltinCanAllocate(), v8::internal::MacroAssembler::CallBuiltin(), v8::internal::Builtins::CallInterfaceDescriptorFor(), v8::internal::DCHECK(), DCHECK_IMPLIES, v8::internal::CallInterfaceDescriptor::GetRegisterParameter(), v8::internal::CallInterfaceDescriptor::GetRegisterParameterCount(), v8::internal::RegListBase< RegisterT >::has(), v8::internal::anonymous_namespace{json-stringifier.cc}::i, and v8::internal::maglev::MaglevAssembler::TemporaryRegisterScopeBase< Derived >::ResetToDefault().

Referenced by v8::internal::maglev::AllocateSlow(), CallBuiltin(), and TruncateDoubleToInt32().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CallRuntime() [1/2]

void v8::internal::maglev::MaglevAssembler::CallRuntime ( Runtime::FunctionId  fid)
inline

Definition at line 785 of file maglev-assembler-inl.h.

785  {
786  DCHECK(allow_call());
787  // Temporaries have to be reset before calling CallRuntime, in case it uses
788  // temporaries that alias register parameters.
789  TemporaryRegisterScope reset_temps(this);
790  reset_temps.ResetToDefault();
792 }
void CallRuntime(const Runtime::Function *f, int num_arguments)

References v8::internal::MacroAssembler::CallRuntime(), v8::internal::DCHECK(), and v8::internal::maglev::MaglevAssembler::TemporaryRegisterScopeBase< Derived >::ResetToDefault().

Referenced by AssertElidedWriteBarrier(), StringCharCodeOrCodePointAt(), TryMigrateInstance(), and TryMigrateInstanceAndMarkMapAsMigrationTarget().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CallRuntime() [2/2]

void v8::internal::maglev::MaglevAssembler::CallRuntime ( Runtime::FunctionId  fid,
int  num_args 
)
inline

Definition at line 794 of file maglev-assembler-inl.h.

795  {
796  DCHECK(allow_call());
797  // Temporaries have to be reset before calling CallRuntime, in case it uses
798  // temporaries that alias register parameters.
799  TemporaryRegisterScope reset_temps(this);
800  reset_temps.ResetToDefault();
801  MacroAssembler::CallRuntime(fid, num_args);
802 }

References v8::internal::MacroAssembler::CallRuntime(), v8::internal::DCHECK(), and v8::internal::maglev::MaglevAssembler::TemporaryRegisterScopeBase< Derived >::ResetToDefault().

+ Here is the call graph for this function:

◆ CallSelf()

void v8::internal::maglev::MaglevAssembler::CallSelf ( )
inline

Definition at line 886 of file maglev-assembler-arm-inl.h.

886  {
887  DCHECK(code_gen_state()->entry_label()->is_bound());
888  bl(code_gen_state()->entry_label());
889 }

References v8::internal::Assembler::bl(), code_gen_state(), and v8::internal::DCHECK().

+ Here is the call graph for this function:

◆ CheckAndEmitDeferredIndirectPointerWriteBarrier()

void v8::internal::maglev::MaglevAssembler::CheckAndEmitDeferredIndirectPointerWriteBarrier ( Register  object,
int  offset,
Register  value,
RegisterSnapshot  register_snapshot,
IndirectPointerTag  tag 
)

◆ CheckAndEmitDeferredWriteBarrier()

template<MaglevAssembler::StoreMode store_mode>
void v8::internal::maglev::MaglevAssembler::CheckAndEmitDeferredWriteBarrier ( Register  object,
OffsetTypeFor< store_mode >  offset,
Register  value,
RegisterSnapshot  register_snapshot,
ValueIsCompressed  value_is_compressed,
ValueCanBeSmi  value_can_be_smi 
)

Definition at line 486 of file maglev-assembler.cc.

489  {
490  ZoneLabelRef done(this);
491  Label* deferred_write_barrier = MakeDeferredCode(
492  [](MaglevAssembler* masm, ZoneLabelRef done, Register object,
493  OffsetTypeFor<store_mode> offset, Register value,
494  RegisterSnapshot register_snapshot, ValueIsCompressed value_type) {
495  ASM_CODE_COMMENT_STRING(masm, "Write barrier slow path");
498  }
499 
500  {
501  // Use the value as the scratch register if possible, since
502  // CheckPageFlag emits slightly better code when value == scratch.
503  MaglevAssembler::TemporaryRegisterScope temp(masm);
504  Register scratch = temp.AcquireScratch();
505  if (value != object && !register_snapshot.live_registers.has(value)) {
506  scratch = value;
507  }
508  __ CheckPageFlag(value, scratch,
510  kEqual, *done);
511  }
512 
515 
516  RegList saved;
517  // The RecordWrite stub promises to restore all allocatable registers,
518  // but not necessarily non-allocatable registers like temporaries. Make
519  // sure we're not trying to keep any non-allocatable registers alive.
520  CHECK((register_snapshot.live_registers - kAllocatableGeneralRegisters)
521  .is_empty());
522  if (object != stub_object_reg &&
523  register_snapshot.live_registers.has(stub_object_reg)) {
524  saved.set(stub_object_reg);
525  }
526  if (register_snapshot.live_registers.has(slot_reg)) {
527  saved.set(slot_reg);
528  }
529 
530  __ PushAll(saved);
531 
532  if (object != stub_object_reg) {
533  __ Move(stub_object_reg, object);
534  object = stub_object_reg;
535  }
536 
537  if constexpr (store_mode == kElement) {
538  __ SetSlotAddressForFixedArrayElement(slot_reg, object, offset);
539  } else {
540  static_assert(store_mode == kField);
541  __ SetSlotAddressForTaggedField(slot_reg, object, offset);
542  }
543 
544  SaveFPRegsMode const save_fp_mode =
545  !register_snapshot.live_double_registers.is_empty()
548 
549  __ CallRecordWriteStub(object, slot_reg, save_fp_mode);
550 
551  __ PopAll(saved);
552  __ Jump(*done);
553  },
554  done, object, offset, value, register_snapshot, value_is_compressed);
555 
556  if (!value_can_be_smi) {
558  }
559 
560 #if V8_STATIC_ROOTS_BOOL
561  // Quick check for Read-only and small Smi values.
562  static_assert(StaticReadOnlyRoot::kLastAllocatedRoot < kRegularPageSize);
564 #endif // V8_STATIC_ROOTS_BOOL
565 
566  if (value_can_be_smi) {
567  JumpIfSmi(value, *done);
568  }
569 
571  MaglevAssembler::TemporaryRegisterScope temp(this);
572  Register scratch = temp.AcquireScratch();
573  CheckPageFlag(object, scratch,
575  deferred_write_barrier);
576  bind(*done);
577 }
constexpr int kRegularPageSize
Definition: build_config.h:83
void PushAll(RegList registers)
void JumpIfUnsignedLessThan(Register x, int32_t y, Label *dest)
void CheckPageFlag(Register object, int mask, Condition cc, Label *condition_met)
void CallRecordWriteStub(Register object, Register slot_address, SaveFPRegsMode fp_mode, StubCallMode mode=StubCallMode::kCallBuiltinPointer)
void PopAll(RegList registers)
void DecompressTagged(const Register &destination, const MemOperand &field_operand)
static constexpr MainThreadFlags kPointersToHereAreInterestingMask
Definition: memory-chunk.h:150
static constexpr MainThreadFlags kPointersFromHereAreInterestingMask
Definition: memory-chunk.h:152
static constexpr Register SlotAddressRegister()
static constexpr bool kUninterestingPagesCanBeSkipped
void JumpIfSmi(Register src, Label *on_smi, Label::Distance near_jump=Label::kFar)
void SetSlotAddressForTaggedField(Register slot_reg, Register object, int offset)
void Move(StackSlot dst, Register src)
void SetSlotAddressForFixedArrayElement(Register slot_reg, Register object, Register index)
#define ASM_CODE_COMMENT_STRING(asm,...)
Definition: assembler.h:618
#define __
static ValueType value_type()
RegListBase< Register > RegList
Definition: reglist-arm.h:14
static constexpr RegList kAllocatableGeneralRegisters
Definition: reglist.h:36
constexpr bool PointerCompressionIsEnabled()
Definition: v8-internal.h:192
#define CHECK(condition)
Definition: logging.h:124

References __, v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), ASM_CODE_COMMENT_STRING, v8::internal::MacroAssembler::AssertNotSmi(), v8::internal::Assembler::bind(), v8::internal::MacroAssembler::CallRecordWriteStub(), CHECK, v8::internal::MacroAssembler::CheckPageFlag(), v8::internal::MacroAssembler::DecompressTagged(), v8::internal::RegListBase< RegisterT >::has(), v8::internal::RegListBase< RegisterT >::is_empty(), Jump(), JumpIfSmi(), v8::internal::MacroAssembler::JumpIfUnsignedLessThan(), v8::internal::kAllocatableGeneralRegisters, kElement, v8::internal::kEqual, kField, v8::internal::kIgnore, v8::internal::kNotEqual, v8::internal::MemoryChunk::kPointersFromHereAreInterestingMask, v8::internal::MemoryChunk::kPointersToHereAreInterestingMask, kRegularPageSize, v8::internal::kSave, v8::internal::WriteBarrier::kUninterestingPagesCanBeSkipped, kValueIsCompressed, v8::internal::maglev::RegisterSnapshot::live_double_registers, v8::internal::maglev::RegisterSnapshot::live_registers, MakeDeferredCode(), Move(), v8::internal::WriteBarrierDescriptor::ObjectRegister(), v8::internal::PointerCompressionIsEnabled(), v8::internal::MacroAssembler::PopAll(), v8::internal::MacroAssembler::PushAll(), v8::internal::RegListBase< RegisterT >::set(), SetSlotAddressForFixedArrayElement(), SetSlotAddressForTaggedField(), v8::internal::WriteBarrierDescriptor::SlotAddressRegister(), v8::internal::value, and v8::internal::wasm::value_type().

+ Here is the call graph for this function:

◆ CheckInt32IsSmi()

void v8::internal::maglev::MaglevAssembler::CheckInt32IsSmi ( Register  obj,
Label fail,
Register  scratch = Register::no_reg() 
)
inline

Definition at line 224 of file maglev-assembler-arm-inl.h.

225  {
226  static_assert(!SmiValuesAre32Bits());
227 
228  TemporaryRegisterScope temps(this);
229  if (scratch == Register::no_reg()) {
230  scratch = temps.AcquireScratch();
231  }
232  add(scratch, obj, obj, SetCC);
233  JumpIf(kOverflow, fail);
234 }
static constexpr Register no_reg()
constexpr bool SmiValuesAre32Bits()
Definition: v8-internal.h:209
constexpr SBit SetCC

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::Assembler::add(), JumpIf(), v8::internal::kOverflow, v8::internal::Register::no_reg(), v8::internal::SetCC, and v8::internal::SmiValuesAre32Bits().

+ Here is the call graph for this function:

◆ CheckIntPtrIsSmi()

void v8::internal::maglev::MaglevAssembler::CheckIntPtrIsSmi ( Register  obj,
Label fail,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 913 of file maglev-assembler-inl.h.

914  {
915  // TODO(388844115): Optimize this per platform.
916  int32_t kSmiMaxValueInt32 = static_cast<int32_t>(Smi::kMaxValue);
917  int32_t kSmiMinValueInt32 = static_cast<int32_t>(Smi::kMinValue);
918  CompareIntPtrAndJumpIf(obj, kSmiMaxValueInt32, kGreaterThan, fail, distance);
919  CompareIntPtrAndJumpIf(obj, kSmiMinValueInt32, kLessThan, fail, distance);
920 }
static constexpr int kMinValue
Definition: smi.h:100
static constexpr int kMaxValue
Definition: smi.h:101
void CompareIntPtrAndJumpIf(Register r1, Register r2, Condition cond, Label *target, Label::Distance distance=Label::kFar)
int int32_t
Definition: unicode.cc:42

References CompareIntPtrAndJumpIf(), v8::internal::kGreaterThan, v8::internal::kLessThan, v8::internal::Smi::kMaxValue, and v8::internal::Smi::kMinValue.

Referenced by SmiTagIntPtrAndJumpIfFail().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CheckJSAnyIsStringAndBranch()

void v8::internal::maglev::MaglevAssembler::CheckJSAnyIsStringAndBranch ( Register  heap_object,
Label if_true,
Label::Distance  true_distance,
bool  fallthrough_when_true,
Label if_false,
Label::Distance  false_distance,
bool  fallthrough_when_false 
)
inline

Definition at line 1039 of file maglev-assembler-inl.h.

1042  {
1043  BranchOnObjectTypeInRange(heap_object, FIRST_STRING_TYPE, LAST_STRING_TYPE,
1044  if_true, true_distance, fallthrough_when_true,
1045  if_false, false_distance, fallthrough_when_false);
1046 }
void BranchOnObjectTypeInRange(Register heap_object, InstanceType lower_limit, InstanceType higher_limit, Label *if_true, Label::Distance true_distance, bool fallthrough_when_true, Label *if_false, Label::Distance false_distance, bool fallthrough_when_false)
constexpr InstanceType LAST_STRING_TYPE

References BranchOnObjectTypeInRange(), and v8::internal::LAST_STRING_TYPE.

Referenced by TestTypeOf().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ code_gen_state()

MaglevCodeGenState* v8::internal::maglev::MaglevAssembler::code_gen_state ( ) const
inline

Definition at line 826 of file maglev-assembler.h.

826 { return code_gen_state_; }

Referenced by AssertStackSizeCorrect(), CallSelf(), DefineExceptionHandlerPoint(), DefineLazyDeoptPoint(), v8::internal::maglev::SaveRegisterStateForCall::DefineSafepointWithLazyDeopt(), GetDeoptLabel(), MakeDeferredCode(), and Prologue().

+ Here is the caller graph for this function:

◆ CompareByteAndJumpIf()

void v8::internal::maglev::MaglevAssembler::CompareByteAndJumpIf ( MemOperand  left,
int8_t  right,
Condition  cond,
Register  scratch,
Label target,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 1127 of file maglev-assembler-arm-inl.h.

1131  {
1132  LoadByte(scratch, left);
1133  Cmp(scratch, right);
1134  JumpIf(cond, target, distance);
1135 }
void Cmp(const Register &rn, int imm)
void LoadByte(Register dst, MemOperand src)

References v8::internal::MacroAssembler::Cmp(), JumpIf(), and LoadByte().

+ Here is the call graph for this function:

◆ CompareDoubleAndJumpIfZeroOrNaN() [1/2]

void v8::internal::maglev::MaglevAssembler::CompareDoubleAndJumpIfZeroOrNaN ( DoubleRegister  reg,
Label target,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 1164 of file maglev-assembler-arm-inl.h.

1165  {
1166  VFPCompareAndSetFlags(reg, 0.0);
1167  JumpIf(eq, target);
1168  JumpIf(vs, target); // NaN check
1169 }
void vs(VRegister vd, Register rs1, uint8_t sumop, VSew vsew, MaskType mask=NoMask)
void VFPCompareAndSetFlags(const SwVfpRegister src1, const SwVfpRegister src2, const Condition cond=al)

References v8::internal::eq, JumpIf(), v8::internal::MacroAssembler::VFPCompareAndSetFlags(), and v8::internal::AssemblerRISCVV::vs().

Referenced by CompareDoubleAndJumpIfZeroOrNaN(), and ToBoolean().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CompareDoubleAndJumpIfZeroOrNaN() [2/2]

void v8::internal::maglev::MaglevAssembler::CompareDoubleAndJumpIfZeroOrNaN ( MemOperand  operand,
Label target,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 1171 of file maglev-assembler-arm-inl.h.

1172  {
1173  TemporaryRegisterScope temps(this);
1174  DoubleRegister value_double = temps.AcquireScratchDouble();
1175  vldr(value_double, operand);
1176  CompareDoubleAndJumpIfZeroOrNaN(value_double, target, distance);
1177 }
void vldr(const DwVfpRegister dst, const Register base, int offset, const Condition cond=al)
void CompareDoubleAndJumpIfZeroOrNaN(DoubleRegister reg, Label *target, Label::Distance distance=Label::kFar)
DwVfpRegister DoubleRegister
Definition: register-arm.h:192

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratchDouble(), CompareDoubleAndJumpIfZeroOrNaN(), and v8::internal::Assembler::vldr().

+ Here is the call graph for this function:

◆ CompareFloat64AndBranch()

void v8::internal::maglev::MaglevAssembler::CompareFloat64AndBranch ( DoubleRegister  src1,
DoubleRegister  src2,
Condition  cond,
BasicBlock if_true,
BasicBlock if_false,
BasicBlock next_block,
BasicBlock nan_failed 
)
inline

Definition at line 872 of file maglev-assembler-arm-inl.h.

875  {
876  VFPCompareAndSetFlags(src1, src2);
877  JumpIf(ConditionForNaN(), nan_failed->label());
878  Branch(cond, if_true, if_false, next_block);
879 }
constexpr Condition ConditionForNaN()

References Branch(), v8::internal::maglev::ConditionForNaN(), JumpIf(), v8::internal::maglev::BasicBlock::label(), and v8::internal::MacroAssembler::VFPCompareAndSetFlags().

+ Here is the call graph for this function:

◆ CompareFloat64AndJumpIf()

void v8::internal::maglev::MaglevAssembler::CompareFloat64AndJumpIf ( DoubleRegister  src1,
DoubleRegister  src2,
Condition  cond,
Label target,
Label nan_failed,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 864 of file maglev-assembler-arm-inl.h.

866  {
867  VFPCompareAndSetFlags(src1, src2);
868  JumpIf(ConditionForNaN(), nan_failed);
869  JumpIf(cond, target, distance);
870 }

References v8::internal::maglev::ConditionForNaN(), JumpIf(), and v8::internal::MacroAssembler::VFPCompareAndSetFlags().

+ Here is the call graph for this function:

◆ CompareInstanceType()

void v8::internal::maglev::MaglevAssembler::CompareInstanceType ( Register  map,
InstanceType  instance_type 
)
inline

Definition at line 847 of file maglev-assembler-arm-inl.h.

848  {
849  TemporaryRegisterScope temps(this);
850  Register scratch = temps.AcquireScratch();
851  MacroAssembler::CompareInstanceType(map, scratch, instance_type);
852 }
void CompareInstanceType(Register map, Register type_reg, InstanceType type)

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), and v8::internal::MacroAssembler::CompareInstanceType().

Referenced by CompareInstanceTypeAndJumpIf().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CompareInstanceTypeAndJumpIf()

void v8::internal::maglev::MaglevAssembler::CompareInstanceTypeAndJumpIf ( Register  map,
InstanceType  type,
Condition  cond,
Label target,
Label::Distance  distance 
)
inline

Definition at line 316 of file maglev-assembler-inl.h.

318  {
320  JumpIf(cond, target, distance);
321 }
void CompareInstanceType(Register map, InstanceType instance_type)

References CompareInstanceType(), JumpIf(), and v8::internal::tracing::type.

Referenced by JumpIfStringMap(), and TestTypeOf().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CompareInstanceTypeRange() [1/2]

void v8::internal::maglev::MaglevAssembler::CompareInstanceTypeRange ( Register  map,
InstanceType  lower_limit,
InstanceType  higher_limit 
)
inline

Referenced by CompareInstanceTypeRangeAndEagerDeoptIf(), JumpIfSeqOneByteStringMap(), and SeqOneByteStringCharCodeAt().

+ Here is the caller graph for this function:

◆ CompareInstanceTypeRange() [2/2]

Condition v8::internal::maglev::MaglevAssembler::CompareInstanceTypeRange ( Register  map,
Register  instance_type_out,
InstanceType  lower_limit,
InstanceType  higher_limit 
)
inline

Definition at line 854 of file maglev-assembler-arm-inl.h.

856  {
857  TemporaryRegisterScope temps(this);
858  Register scratch = temps.AcquireScratch();
859  MacroAssembler::CompareInstanceTypeRange(map, instance_type_out, scratch,
860  lower_limit, higher_limit);
861  return kUnsignedLessThanEqual;
862 }
void CompareInstanceTypeRange(Register map, Register type_reg, Register scratch, InstanceType lower_limit, InstanceType higher_limit)

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::MacroAssembler::CompareInstanceTypeRange(), and v8::internal::kUnsignedLessThanEqual.

+ Here is the call graph for this function:

◆ CompareInstanceTypeRangeAndEagerDeoptIf()

template<typename NodeT >
void v8::internal::maglev::MaglevAssembler::CompareInstanceTypeRangeAndEagerDeoptIf ( Register  map,
Register  instance_type_out,
InstanceType  lower_limit,
InstanceType  higher_limit,
Condition  cond,
DeoptimizeReason  reason,
NodeT node 
)
inline

Definition at line 324 of file maglev-assembler-inl.h.

327  {
328  CompareInstanceTypeRange(map, instance_type_out, lower_limit, higher_limit);
329  EmitEagerDeoptIf(cond, reason, node);
330 }
void CompareInstanceTypeRange(Register map, InstanceType lower_limit, InstanceType higher_limit)
void EmitEagerDeoptIf(Condition cond, DeoptimizeReason reason, NodeT *node)

References CompareInstanceTypeRange(), and EmitEagerDeoptIf().

+ Here is the call graph for this function:

◆ CompareInt32AndAssert() [1/2]

void v8::internal::maglev::MaglevAssembler::CompareInt32AndAssert ( Register  r1,
int32_t  value,
Condition  cond,
AbortReason  reason 
)
inline

Definition at line 1077 of file maglev-assembler-arm-inl.h.

1079  {
1080  cmp(r1, Operand(value));
1081  Assert(cond, reason);
1082 }

References v8::internal::MacroAssembler::Assert(), v8::internal::Assembler::cmp(), and v8::internal::value.

+ Here is the call graph for this function:

◆ CompareInt32AndAssert() [2/2]

void v8::internal::maglev::MaglevAssembler::CompareInt32AndAssert ( Register  r1,
Register  r2,
Condition  cond,
AbortReason  reason 
)
inline

Definition at line 1071 of file maglev-assembler-arm-inl.h.

1073  {
1074  cmp(r1, r2);
1075  Assert(cond, reason);
1076 }

References v8::internal::MacroAssembler::Assert(), and v8::internal::Assembler::cmp().

Referenced by AssertContextCellState(), LoadFixedArrayElement(), LoadFixedDoubleArrayElement(), SeqOneByteStringCharCodeAt(), StoreFixedArrayElementWithWriteBarrier(), and UncheckedSmiTagUint32().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CompareInt32AndBranch() [1/4]

void v8::internal::maglev::MaglevAssembler::CompareInt32AndBranch ( Register  r1,
int32_t  value,
Condition  cond,
BasicBlock if_true,
BasicBlock if_false,
BasicBlock next_block 
)
inline

Definition at line 365 of file maglev-assembler-inl.h.

369  {
370  CompareInt32AndBranch(r1, value, cond, if_true->label(), Label::kFar,
371  if_true == next_block, if_false->label(), Label::kFar,
372  if_false == next_block);
373 }
void CompareInt32AndBranch(Register r1, int32_t value, Condition cond, BasicBlock *if_true, BasicBlock *if_false, BasicBlock *next_block)

References v8::internal::Label::kFar, v8::internal::maglev::BasicBlock::label(), and v8::internal::value.

Referenced by CompareInt32AndBranch().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CompareInt32AndBranch() [2/4]

void v8::internal::maglev::MaglevAssembler::CompareInt32AndBranch ( Register  r1,
int32_t  value,
Condition  cond,
Label if_true,
Label::Distance  true_distance,
bool  fallthrough_when_true,
Label if_false,
Label::Distance  false_distance,
bool  fallthrough_when_false 
)
inline

Definition at line 1084 of file maglev-assembler-arm-inl.h.

1087  {
1088  cmp(r1, Operand(value));
1089  Branch(cond, if_true, true_distance, fallthrough_when_true, if_false,
1090  false_distance, fallthrough_when_false);
1091 }

References Branch(), v8::internal::Assembler::cmp(), and v8::internal::value.

+ Here is the call graph for this function:

◆ CompareInt32AndBranch() [3/4]

void v8::internal::maglev::MaglevAssembler::CompareInt32AndBranch ( Register  r1,
Register  r2,
Condition  cond,
BasicBlock if_true,
BasicBlock if_false,
BasicBlock next_block 
)
inline

Definition at line 375 of file maglev-assembler-inl.h.

379  {
380  CompareInt32AndBranch(r1, r2, cond, if_true->label(), Label::kFar,
381  if_true == next_block, if_false->label(), Label::kFar,
382  if_false == next_block);
383 }

References CompareInt32AndBranch(), v8::internal::Label::kFar, and v8::internal::maglev::BasicBlock::label().

+ Here is the call graph for this function:

◆ CompareInt32AndBranch() [4/4]

void v8::internal::maglev::MaglevAssembler::CompareInt32AndBranch ( Register  r1,
Register  r2,
Condition  cond,
Label if_true,
Label::Distance  true_distance,
bool  fallthrough_when_true,
Label if_false,
Label::Distance  false_distance,
bool  fallthrough_when_false 
)
inline

Definition at line 1093 of file maglev-assembler-arm-inl.h.

1096  {
1097  cmp(r1, r2);
1098  Branch(cond, if_true, true_distance, fallthrough_when_true, if_false,
1099  false_distance, fallthrough_when_false);
1100 }

References Branch(), and v8::internal::Assembler::cmp().

+ Here is the call graph for this function:

◆ CompareInt32AndJumpIf() [1/2]

void v8::internal::maglev::MaglevAssembler::CompareInt32AndJumpIf ( Register  r1,
int32_t  value,
Condition  cond,
Label target,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 1063 of file maglev-assembler-arm-inl.h.

1066  {
1067  cmp(r1, Operand(value));
1068  JumpIf(cond, target);
1069 }

References v8::internal::Assembler::cmp(), JumpIf(), and v8::internal::value.

+ Here is the call graph for this function:

◆ CompareInt32AndJumpIf() [2/2]

void v8::internal::maglev::MaglevAssembler::CompareInt32AndJumpIf ( Register  r1,
Register  r2,
Condition  cond,
Label target,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 1039 of file maglev-assembler-arm-inl.h.

1042  {
1043  cmp(r1, r2);
1044  JumpIf(cond, target);
1045 }

References v8::internal::Assembler::cmp(), and JumpIf().

Referenced by JumpIfHoleNan(), JumpIfNotHoleNan(), JumpIfSeqOneByteStringMap(), JumpIfStringMap(), SmiTagUint32AndJumpIfFail(), and ToBoolean().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CompareIntPtrAndBranch() [1/2]

void v8::internal::maglev::MaglevAssembler::CompareIntPtrAndBranch ( Register  r1,
int32_t  value,
Condition  cond,
BasicBlock if_true,
BasicBlock if_false,
BasicBlock next_block 
)
inline

Definition at line 385 of file maglev-assembler-inl.h.

389  {
390  CompareIntPtrAndBranch(r1, value, cond, if_true->label(), Label::kFar,
391  if_true == next_block, if_false->label(), Label::kFar,
392  if_false == next_block);
393 }
void CompareIntPtrAndBranch(Register r1, int32_t value, Condition cond, BasicBlock *if_true, BasicBlock *if_false, BasicBlock *next_block)

References v8::internal::Label::kFar, v8::internal::maglev::BasicBlock::label(), and v8::internal::value.

+ Here is the call graph for this function:

◆ CompareIntPtrAndBranch() [2/2]

void v8::internal::maglev::MaglevAssembler::CompareIntPtrAndBranch ( Register  r1,
int32_t  value,
Condition  cond,
Label if_true,
Label::Distance  true_distance,
bool  fallthrough_when_true,
Label if_false,
Label::Distance  false_distance,
bool  fallthrough_when_false 
)
inline

Definition at line 1102 of file maglev-assembler-arm-inl.h.

1105  {
1106  cmp(r1, Operand(value));
1107  Branch(cond, if_true, true_distance, fallthrough_when_true, if_false,
1108  false_distance, fallthrough_when_false);
1109 }

References Branch(), v8::internal::Assembler::cmp(), and v8::internal::value.

+ Here is the call graph for this function:

◆ CompareIntPtrAndJumpIf() [1/2]

void v8::internal::maglev::MaglevAssembler::CompareIntPtrAndJumpIf ( Register  r1,
int32_t  value,
Condition  cond,
Label target,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 1055 of file maglev-assembler-arm-inl.h.

1058  {
1059  cmp(r1, Operand(value));
1060  JumpIf(cond, target);
1061 }

References v8::internal::Assembler::cmp(), JumpIf(), and v8::internal::value.

+ Here is the call graph for this function:

◆ CompareIntPtrAndJumpIf() [2/2]

void v8::internal::maglev::MaglevAssembler::CompareIntPtrAndJumpIf ( Register  r1,
Register  r2,
Condition  cond,
Label target,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 1047 of file maglev-assembler-arm-inl.h.

1050  {
1051  cmp(r1, r2);
1052  JumpIf(cond, target);
1053 }

References v8::internal::Assembler::cmp(), and JumpIf().

Referenced by CheckIntPtrIsSmi().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CompareMapWithRoot()

void v8::internal::maglev::MaglevAssembler::CompareMapWithRoot ( Register  object,
RootIndex  index,
Register  scratch 
)
inline

Definition at line 840 of file maglev-assembler-arm-inl.h.

842  {
843  LoadMap(scratch, object);
844  CompareRoot(scratch, index);
845 }
void CompareRoot(Register obj, RootIndex index)
void LoadMap(Register destination, Register object)

References v8::internal::MacroAssembler::CompareRoot(), v8::internal::index, and v8::internal::MacroAssembler::LoadMap().

Referenced by CompareMapWithRootAndEmitEagerDeoptIf(), EnsureWritableFastElements(), and TestTypeOf().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CompareMapWithRootAndEmitEagerDeoptIf()

template<typename NodeT >
void v8::internal::maglev::MaglevAssembler::CompareMapWithRootAndEmitEagerDeoptIf ( Register  reg,
RootIndex  index,
Register  scratch,
Condition  cond,
DeoptimizeReason  reason,
NodeT node 
)
inline

Definition at line 341 of file maglev-assembler-inl.h.

343  {
344  CompareMapWithRoot(reg, index, scratch);
345  EmitEagerDeoptIf(cond, reason, node);
346 }
void CompareMapWithRoot(Register object, RootIndex index, Register scratch)

References CompareMapWithRoot(), EmitEagerDeoptIf(), and v8::internal::index.

+ Here is the call graph for this function:

◆ CompareRootAndEmitEagerDeoptIf()

template<typename NodeT >
void v8::internal::maglev::MaglevAssembler::CompareRootAndEmitEagerDeoptIf ( Register  reg,
RootIndex  index,
Condition  cond,
DeoptimizeReason  reason,
NodeT node 
)
inline

Definition at line 333 of file maglev-assembler-inl.h.

335  {
336  CompareRoot(reg, index);
337  EmitEagerDeoptIf(cond, reason, node);
338 }

References v8::internal::MacroAssembler::CompareRoot(), EmitEagerDeoptIf(), and v8::internal::index.

+ Here is the call graph for this function:

◆ CompareSmiAndAssert()

void v8::internal::maglev::MaglevAssembler::CompareSmiAndAssert ( Register  r1,
Tagged< Smi value,
Condition  cond,
AbortReason  reason 
)
inline

Definition at line 1118 of file maglev-assembler-arm-inl.h.

1120  {
1121  if (!v8_flags.debug_code) return;
1122  AssertSmi(r1);
1123  cmp(r1, Operand(value));
1124  Assert(cond, reason);
1125 }
void AssertSmi(Register object, AbortReason reason=AbortReason::kOperandIsNotASmi) NOOP_UNLESS_DEBUG_CODE

References v8::internal::MacroAssembler::Assert(), v8::internal::MacroAssembler::AssertSmi(), v8::internal::Assembler::cmp(), v8::internal::v8_flags, and v8::internal::value.

+ Here is the call graph for this function:

◆ CompareSmiAndJumpIf()

void v8::internal::maglev::MaglevAssembler::CompareSmiAndJumpIf ( Register  r1,
Tagged< Smi value,
Condition  cond,
Label target,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 1111 of file maglev-assembler-arm-inl.h.

1113  {
1114  cmp(r1, Operand(value));
1115  JumpIf(cond, target);
1116 }

References v8::internal::Assembler::cmp(), JumpIf(), and v8::internal::value.

Referenced by ToBoolean().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CompareTaggedAndJumpIf() [1/3]

void v8::internal::maglev::MaglevAssembler::CompareTaggedAndJumpIf ( Register  reg,
Handle< HeapObject obj,
Condition  cond,
Label target,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 1146 of file maglev-assembler-arm-inl.h.

1150  {
1151  cmp(reg, Operand(obj));
1152  b(cond, target);
1153 }
void b(int branch_offset, Condition cond=al, RelocInfo::Mode rmode=RelocInfo::NO_INFO)

References v8::internal::Assembler::b(), and v8::internal::Assembler::cmp().

+ Here is the call graph for this function:

◆ CompareTaggedAndJumpIf() [2/3]

void v8::internal::maglev::MaglevAssembler::CompareTaggedAndJumpIf ( Register  reg,
Tagged< Smi smi,
Condition  cond,
Label target,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 1137 of file maglev-assembler-arm-inl.h.

1141  {
1142  cmp(r1, Operand(value));
1143  JumpIf(cond, target);
1144 }

References v8::internal::Assembler::cmp(), JumpIf(), and v8::internal::value.

Referenced by TryMigrateInstance().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CompareTaggedAndJumpIf() [3/3]

void v8::internal::maglev::MaglevAssembler::CompareTaggedAndJumpIf ( Register  src1,
Register  src2,
Condition  cond,
Label target,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 1155 of file maglev-assembler-arm-inl.h.

1159  {
1160  CmpTagged(src1, src2);
1161  JumpIf(cond, target, distance);
1162 }
void CmpTagged(const Register &r1, const Register &r2)

References v8::internal::MacroAssembler::CmpTagged(), and JumpIf().

+ Here is the call graph for this function:

◆ CompareTaggedRootAndEmitEagerDeoptIf()

template<typename NodeT >
void v8::internal::maglev::MaglevAssembler::CompareTaggedRootAndEmitEagerDeoptIf ( Register  reg,
RootIndex  index,
Condition  cond,
DeoptimizeReason  reason,
NodeT node 
)
inline

Definition at line 349 of file maglev-assembler-inl.h.

351  {
352  CompareTaggedRoot(reg, index);
353  EmitEagerDeoptIf(cond, reason, node);
354 }
void CompareTaggedRoot(Register with, RootIndex index)

References v8::internal::MacroAssembler::CompareTaggedRoot(), EmitEagerDeoptIf(), and v8::internal::index.

+ Here is the call graph for this function:

◆ CompareUInt32AndEmitEagerDeoptIf()

template<typename NodeT >
void v8::internal::maglev::MaglevAssembler::CompareUInt32AndEmitEagerDeoptIf ( Register  reg,
int  imm,
Condition  cond,
DeoptimizeReason  reason,
NodeT node 
)
inline

Definition at line 357 of file maglev-assembler-inl.h.

359  {
360  Cmp(reg, imm);
361  EmitEagerDeoptIf(cond, reason, node);
362 }

References v8::internal::MacroAssembler::Cmp(), and EmitEagerDeoptIf().

+ Here is the call graph for this function:

◆ compilation_info()

MaglevCompilationInfo* v8::internal::maglev::MaglevAssembler::compilation_info ( ) const
inline

Definition at line 830 of file maglev-assembler.h.

830  {
831  return code_gen_state()->compilation_info();
832  }
MaglevCompilationInfo * compilation_info() const

Referenced by v8::internal::maglev::MaglevCodeGenerator::EmitDeopts(), JumpIfHoleNan(), MakeDeferredCode(), Prologue(), and ToBoolean().

+ Here is the caller graph for this function:

◆ CountLeadingZerosInt32()

void v8::internal::maglev::MaglevAssembler::CountLeadingZerosInt32 ( Register  dst,
Register  src 
)

Definition at line 494 of file maglev-assembler-arm.cc.

494  {
495  clz(dst, src);
496 }
void clz(Register dst, Register src, Condition cond=al)

References v8::internal::Assembler::clz().

+ Here is the call graph for this function:

◆ DataViewElementOperand()

MemOperand v8::internal::maglev::MaglevAssembler::DataViewElementOperand ( Register  data_pointer,
Register  index 
)
inline

Definition at line 320 of file maglev-assembler-arm-inl.h.

321  {
322  return MemOperand(data_pointer, index);
323 }

References v8::internal::index.

◆ DecrementInt32()

void v8::internal::maglev::MaglevAssembler::DecrementInt32 ( Register  reg)
inline

Definition at line 485 of file maglev-assembler-arm-inl.h.

485  {
486  sub(reg, reg, Operand(1));
487 }
void sub(Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)

References v8::internal::Assembler::sub().

+ Here is the call graph for this function:

◆ DefineExceptionHandlerAndLazyDeoptPoint()

void v8::internal::maglev::MaglevAssembler::DefineExceptionHandlerAndLazyDeoptPoint ( NodeBase node)
inline

Definition at line 1095 of file maglev-assembler-inl.h.

1096  {
1098  DefineLazyDeoptPoint(node->lazy_deopt_info());
1099 }
void DefineLazyDeoptPoint(LazyDeoptInfo *info)

References DefineExceptionHandlerPoint(), DefineLazyDeoptPoint(), and v8::internal::maglev::NodeBase::lazy_deopt_info().

+ Here is the call graph for this function:

◆ DefineExceptionHandlerPoint()

void v8::internal::maglev::MaglevAssembler::DefineExceptionHandlerPoint ( NodeBase node)
inline

Definition at line 1088 of file maglev-assembler-inl.h.

1088  {
1089  ExceptionHandlerInfo* info = node->exception_handler_info();
1090  if (!info->HasExceptionHandler()) return;
1091  info->set_pc_offset(pc_offset_for_safepoint());
1093 }

References code_gen_state(), v8::internal::maglev::NodeBase::exception_handler_info(), v8::internal::maglev::ExceptionHandlerInfo::HasExceptionHandler(), v8::internal::Assembler::pc_offset_for_safepoint(), v8::internal::maglev::MaglevCodeGenState::PushHandlerInfo(), and v8::internal::maglev::ExceptionHandlerInfo::set_pc_offset().

Referenced by DefineExceptionHandlerAndLazyDeoptPoint().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ DefineLazyDeoptPoint()

void v8::internal::maglev::MaglevAssembler::DefineLazyDeoptPoint ( LazyDeoptInfo info)
inline

Definition at line 1081 of file maglev-assembler-inl.h.

1081  {
1082  info->set_deopting_call_return_pc(pc_offset_for_safepoint());
1083  code_gen_state()->PushLazyDeopt(info);
1086 }
Safepoint DefineSafepoint(Assembler *assembler)
MaglevSafepointTableBuilder * safepoint_table_builder() const

References code_gen_state(), v8::internal::MaglevSafepointTableBuilder::DefineSafepoint(), MaybeEmitPlaceHolderForDeopt(), v8::internal::Assembler::pc_offset_for_safepoint(), v8::internal::maglev::MaglevCodeGenState::PushLazyDeopt(), safepoint_table_builder(), and v8::internal::maglev::LazyDeoptInfo::set_deopting_call_return_pc().

Referenced by DefineExceptionHandlerAndLazyDeoptPoint().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ DeoptIfBufferDetached()

template<typename NodeT >
void v8::internal::maglev::MaglevAssembler::DeoptIfBufferDetached ( Register  array,
Register  scratch,
NodeT node 
)
inline

Definition at line 700 of file maglev-assembler-arm-inl.h.

702  {
703  // A detached buffer leads to megamorphic feedback, so we won't have a deopt
704  // loop if we deopt here.
705  LoadTaggedField(scratch,
706  FieldMemOperand(array, JSArrayBufferView::kBufferOffset));
707  LoadTaggedField(scratch,
708  FieldMemOperand(scratch, JSArrayBuffer::kBitFieldOffset));
709  tst(scratch, Operand(JSArrayBuffer::WasDetachedBit::kMask));
710  EmitEagerDeoptIf(ne, DeoptimizeReason::kArrayBufferWasDetached, node);
711 }
void tst(Register src1, const Operand &src2, Condition cond=al)
void LoadTaggedField(Register result, MemOperand operand)

References EmitEagerDeoptIf(), v8::internal::FieldMemOperand(), LoadTaggedField(), v8::internal::ne, and v8::internal::Assembler::tst().

+ Here is the call graph for this function:

◆ EmitEagerDeopt()

template<typename NodeT >
void v8::internal::maglev::MaglevAssembler::EmitEagerDeopt ( NodeT node,
DeoptimizeReason  reason 
)
inline

Definition at line 1020 of file maglev-assembler.h.

1021  {
1022  RecordComment("-- jump to eager deopt");
1023  JumpToDeopt(GetDeoptLabel(node, reason));
1024 }
void RecordComment(const char *comment, const SourceLocation &loc=SourceLocation::Current())
Definition: assembler.h:417
Label * GetDeoptLabel(NodeT *node, DeoptimizeReason reason)

References GetDeoptLabel(), JumpToDeopt(), and v8::internal::AssemblerBase::RecordComment().

+ Here is the call graph for this function:

◆ EmitEagerDeoptIf()

template<typename NodeT >
void v8::internal::maglev::MaglevAssembler::EmitEagerDeoptIf ( Condition  cond,
DeoptimizeReason  reason,
NodeT node 
)
inline

Definition at line 1027 of file maglev-assembler.h.

1029  {
1030  RecordComment("-- Jump to eager deopt");
1031  JumpIf(cond, GetDeoptLabel(node, reason));
1032 }

References GetDeoptLabel(), JumpIf(), and v8::internal::AssemblerBase::RecordComment().

Referenced by CompareInstanceTypeRangeAndEagerDeoptIf(), CompareMapWithRootAndEmitEagerDeoptIf(), CompareRootAndEmitEagerDeoptIf(), CompareTaggedRootAndEmitEagerDeoptIf(), CompareUInt32AndEmitEagerDeoptIf(), DeoptIfBufferDetached(), and EmitEagerDeoptIfNotEqual().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ EmitEagerDeoptIfNotEqual()

template<typename NodeT >
void v8::internal::maglev::MaglevAssembler::EmitEagerDeoptIfNotEqual ( DeoptimizeReason  reason,
NodeT node 
)
inline

Definition at line 1317 of file maglev-assembler-arm-inl.h.

1318  {
1319  EmitEagerDeoptIf(ne, reason, node);
1320 }

References EmitEagerDeoptIf(), and v8::internal::ne.

+ Here is the call graph for this function:

◆ EmitEagerDeoptIfNotSmi()

template<typename NodeT >
void v8::internal::maglev::MaglevAssembler::EmitEagerDeoptIfNotSmi ( NodeT node,
Register  object,
DeoptimizeReason  reason 
)
inline

Definition at line 1042 of file maglev-assembler.h.

1043  {
1044  RecordComment("-- Jump to eager deopt");
1045  JumpIfNotSmi(object, GetDeoptLabel(node, reason));
1046 }

References GetDeoptLabel(), JumpIfNotSmi(), and v8::internal::AssemblerBase::RecordComment().

+ Here is the call graph for this function:

◆ EmitEagerDeoptIfSmi()

template<typename NodeT >
void v8::internal::maglev::MaglevAssembler::EmitEagerDeoptIfSmi ( NodeT node,
Register  object,
DeoptimizeReason  reason 
)
inline

Definition at line 1035 of file maglev-assembler.h.

1036  {
1037  RecordComment("-- Jump to eager deopt");
1038  JumpIfSmi(object, GetDeoptLabel(node, reason));
1039 }

References GetDeoptLabel(), JumpIfSmi(), and v8::internal::AssemblerBase::RecordComment().

+ Here is the call graph for this function:

◆ EmitEagerDeoptStress()

void v8::internal::maglev::MaglevAssembler::EmitEagerDeoptStress ( Label label)
inline

Definition at line 903 of file maglev-assembler-arm-inl.h.

903  {
904  // TODO(olivf): On arm `--deopt-every-n-times` is currently not supported.
905  // Supporting it would require to implement this method, additionally handle
906  // deopt branches in Cbz, and handle all cases where we fall through to the
907  // deopt branch (like Int32Divide).
908 }

◆ EmitEnterExitFrame()

void v8::internal::maglev::MaglevAssembler::EmitEnterExitFrame ( int  extra_slots,
StackFrame::Type  frame_type,
Register  c_function,
Register  scratch 
)
inline

Definition at line 524 of file maglev-assembler-arm-inl.h.

527  {
528  EnterExitFrame(scratch, extra_slots, frame_type);
529 }
void EnterExitFrame(Register scratch, int stack_space, StackFrame::Type frame_type)

References v8::internal::MacroAssembler::EnterExitFrame().

+ Here is the call graph for this function:

◆ EnsureWritableFastElements()

void v8::internal::maglev::MaglevAssembler::EnsureWritableFastElements ( RegisterSnapshot  register_snapshot,
Register  elements,
Register  object,
Register  scratch 
)

Definition at line 137 of file maglev-assembler.cc.

139  {
140  ZoneLabelRef done(this);
141  CompareMapWithRoot(elements, RootIndex::kFixedArrayMap, scratch);
143  kNotEqual,
144  [](MaglevAssembler* masm, ZoneLabelRef done, Register object,
145  Register result_reg, RegisterSnapshot snapshot) {
146  {
147  snapshot.live_registers.clear(result_reg);
148  snapshot.live_tagged_registers.clear(result_reg);
149  SaveRegisterStateForCall save_register_state(masm, snapshot);
150  __ CallBuiltin<Builtin::kCopyFastSmiOrObjectElements>(object);
151  save_register_state.DefineSafepoint();
152  __ Move(result_reg, kReturnRegister0);
153  }
154  __ Jump(*done);
155  },
156  done, object, elements, register_snapshot);
157  bind(*done);
158 }
void JumpToDeferredIf(Condition cond, Function &&deferred_code_gen, Args &&... args)
constexpr Register kReturnRegister0
Definition: register-arm.h:308

References __, v8::internal::Assembler::bind(), v8::internal::RegListBase< RegisterT >::clear(), CompareMapWithRoot(), v8::internal::maglev::SaveRegisterStateForCall::DefineSafepoint(), Jump(), JumpToDeferredIf(), v8::internal::kNotEqual, v8::internal::kReturnRegister0, v8::internal::maglev::RegisterSnapshot::live_registers, v8::internal::maglev::RegisterSnapshot::live_tagged_registers, and Move().

+ Here is the call graph for this function:

◆ FinishCode()

void v8::internal::maglev::MaglevAssembler::FinishCode ( )
inline

Definition at line 1314 of file maglev-assembler-arm-inl.h.

1314 { CheckConstPool(true, false); }
void CheckConstPool(bool force_emit, bool require_jump)

References v8::internal::Assembler::CheckConstPool().

+ Here is the call graph for this function:

◆ Float64SilenceNan()

void v8::internal::maglev::MaglevAssembler::Float64SilenceNan ( DoubleRegister  value)
inline

Definition at line 943 of file maglev-assembler-arm-inl.h.

943  {
945 }
void VFPCanonicalizeNaN(const DwVfpRegister dst, const DwVfpRegister src, const Condition cond=al)

References v8::internal::value, and v8::internal::MacroAssembler::VFPCanonicalizeNaN().

+ Here is the call graph for this function:

◆ FromAnyToRegister()

Register v8::internal::maglev::MaglevAssembler::FromAnyToRegister ( const Input input,
Register  scratch 
)

Definition at line 42 of file maglev-assembler.cc.

43  {
44  if (input.operand().IsConstant()) {
45  input.node()->LoadToRegister(this, scratch);
46  return scratch;
47  }
48  const compiler::AllocatedOperand& operand =
49  compiler::AllocatedOperand::cast(input.operand());
50  if (operand.IsRegister()) {
51  return ToRegister(input);
52  } else {
53  DCHECK(operand.IsStackSlot());
54  Move(scratch, ToMemOperand(input));
55  return scratch;
56  }
57 }
static LocationOperand * cast(InstructionOperand *op)
Definition: instruction.h:599
MemOperand ToMemOperand(const compiler::InstructionOperand &operand)
Register ToRegister(const compiler::InstructionOperand &operand)

References v8::internal::compiler::LocationOperand::cast(), v8::internal::DCHECK(), v8::internal::compiler::InstructionOperand::IsRegister(), v8::internal::compiler::InstructionOperand::IsStackSlot(), v8::internal::maglev::ValueNode::LoadToRegister(), Move(), v8::internal::maglev::Input::node(), v8::internal::maglev::ValueLocation::operand(), ToMemOperand(), and v8::internal::maglev::ToRegister().

+ Here is the call graph for this function:

◆ FunctionEntryStackCheck()

Condition v8::internal::maglev::MaglevAssembler::FunctionEntryStackCheck ( int  stack_check_offset)
inline

Definition at line 1300 of file maglev-assembler-arm-inl.h.

1301  {
1302  TemporaryRegisterScope temps(this);
1303  Register stack_cmp_reg = sp;
1304  if (stack_check_offset >= kStackLimitSlackForDeoptimizationInBytes) {
1305  stack_cmp_reg = temps.AcquireScratch();
1306  sub(stack_cmp_reg, sp, Operand(stack_check_offset));
1307  }
1308  Register interrupt_stack_limit = temps.AcquireScratch();
1309  LoadStackLimit(interrupt_stack_limit, StackLimitKind::kInterruptStackLimit);
1310  cmp(stack_cmp_reg, interrupt_stack_limit);
1312 }
void LoadStackLimit(Register destination, StackLimitKind kind)
@ kUnsignedGreaterThanEqual
constexpr int kStackLimitSlackForDeoptimizationInBytes
Definition: globals.h:221

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::Assembler::cmp(), v8::internal::kInterruptStackLimit, v8::internal::kStackLimitSlackForDeoptimizationInBytes, v8::internal::kUnsignedGreaterThanEqual, v8::internal::MacroAssembler::LoadStackLimit(), and v8::internal::Assembler::sub().

+ Here is the call graph for this function:

◆ GetAllocatableDoubleRegisters()

static constexpr DoubleRegList v8::internal::maglev::MaglevAssembler::GetAllocatableDoubleRegisters ( )
inlinestaticconstexpr

Definition at line 120 of file maglev-assembler.h.

120  {
122  }
static constexpr DoubleRegList kAllocatableDoubleRegisters
Definition: reglist.h:43

References v8::internal::kAllocatableDoubleRegisters.

◆ GetAllocatableRegisters()

static constexpr RegList v8::internal::maglev::MaglevAssembler::GetAllocatableRegisters ( )
inlinestaticconstexpr

Definition at line 105 of file maglev-assembler.h.

105  {
106 #if defined(V8_TARGET_ARCH_ARM)
108 #elif defined(V8_TARGET_ARCH_RISCV64)
111 #else
113 #endif
114  }
constexpr Register kMaglevExtraScratchRegister
Definition: register-arm.h:341
constexpr Register kMaglevFlagsRegister

References v8::internal::kAllocatableGeneralRegisters, v8::internal::kMaglevExtraScratchRegister, and v8::internal::kMaglevFlagsRegister.

◆ GetDeoptLabel()

template<typename NodeT >
Label * v8::internal::maglev::MaglevAssembler::GetDeoptLabel ( NodeT node,
DeoptimizeReason  reason 
)
inline

Definition at line 1005 of file maglev-assembler.h.

1006  {
1007  static_assert(NodeT::kProperties.can_eager_deopt());
1008  EagerDeoptInfo* deopt_info = node->eager_deopt_info();
1009  if (deopt_info->reason() != DeoptimizeReason::kUnknown) {
1010  DCHECK_EQ(deopt_info->reason(), reason);
1011  }
1012  if (deopt_info->deopt_entry_label()->is_unused()) {
1013  code_gen_state()->PushEagerDeopt(deopt_info);
1014  deopt_info->set_reason(reason);
1015  }
1016  return node->eager_deopt_info()->deopt_entry_label();
1017 }

References code_gen_state(), DCHECK_EQ, v8::internal::maglev::DeoptInfo::deopt_entry_label(), v8::internal::Label::is_unused(), v8::internal::maglev::MaglevCodeGenState::PushEagerDeopt(), v8::internal::maglev::EagerDeoptInfo::reason(), and v8::internal::maglev::EagerDeoptInfo::set_reason().

Referenced by EmitEagerDeopt(), EmitEagerDeoptIf(), EmitEagerDeoptIfNotSmi(), and EmitEagerDeoptIfSmi().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetFramePointer()

Register v8::internal::maglev::MaglevAssembler::GetFramePointer ( )
inline

Definition at line 284 of file maglev-assembler-arm-inl.h.

284 { return fp; }

◆ GetFramePointerOffsetForStackSlot() [1/2]

int v8::internal::maglev::MaglevAssembler::GetFramePointerOffsetForStackSlot ( const compiler::AllocatedOperand operand)
inline

Definition at line 130 of file maglev-assembler.h.

131  {
132  int index = operand.index();
133  if (operand.representation() != MachineRepresentation::kTagged) {
135  }
137  }
int GetFramePointerOffsetForStackSlot(const compiler::AllocatedOperand &operand)

References v8::internal::compiler::LocationOperand::index(), v8::internal::index, v8::internal::kTagged, and v8::internal::compiler::LocationOperand::representation().

Referenced by GetStackSlot().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetFramePointerOffsetForStackSlot() [2/2]

constexpr int v8::internal::maglev::MaglevAssembler::GetFramePointerOffsetForStackSlot ( int  index)
inlineconstexprprivate

◆ GetStackSlot()

MemOperand v8::internal::maglev::MaglevAssembler::GetStackSlot ( const compiler::AllocatedOperand operand)
inline

Definition at line 287 of file maglev-assembler-arm-inl.h.

288  {
289  return MemOperand(fp, GetFramePointerOffsetForStackSlot(operand));
290 }

References GetFramePointerOffsetForStackSlot().

Referenced by v8::internal::maglev::detail::PushInput(), and ToMemOperand().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IncrementAddress()

void v8::internal::maglev::MaglevAssembler::IncrementAddress ( Register  reg,
int32_t  delta 
)
inline

Definition at line 513 of file maglev-assembler-arm-inl.h.

513  {
514  add(reg, reg, Operand(delta));
515 }

References v8::internal::Assembler::add().

+ Here is the call graph for this function:

◆ IncrementInt32()

void v8::internal::maglev::MaglevAssembler::IncrementInt32 ( Register  reg)
inline

Definition at line 481 of file maglev-assembler-arm-inl.h.

481  {
482  add(reg, reg, Operand(1));
483 }

References v8::internal::Assembler::add().

+ Here is the call graph for this function:

◆ Int32ToDouble()

void v8::internal::maglev::MaglevAssembler::Int32ToDouble ( DoubleRegister  result,
Register  src 
)
inline

Definition at line 1255 of file maglev-assembler-arm-inl.h.

1256  {
1257  UseScratchRegisterScope temps(this);
1258  SwVfpRegister temp_vfps = SwVfpRegister::no_reg();
1259  if (result.code() < 16) {
1260  temp_vfps = LowDwVfpRegister::from_code(result.code()).low();
1261  } else {
1262  temp_vfps = temps.AcquireS();
1263  }
1264  vmov(temp_vfps, src);
1265  vcvt_f64_s32(result, temp_vfps);
1266 }
void vmov(const SwVfpRegister dst, Float32 imm)
void vcvt_f64_s32(const DwVfpRegister dst, const SwVfpRegister src, VFPConversionMode mode=kDefaultRoundToZero, const Condition cond=al)
friend class UseScratchRegisterScope
SwVfpRegister low() const
Definition: register-arm.h:200
static constexpr LowDwVfpRegister from_code(int8_t code)
Definition: register-base.h:36

References v8::internal::UseScratchRegisterScope::AcquireS(), v8::internal::RegisterBase< LowDwVfpRegister, kDoubleCode_d16 >::from_code(), v8::internal::LowDwVfpRegister::low(), v8::internal::RegisterBase< SwVfpRegister, kSwVfpAfterLast >::no_reg(), v8::base::internal::result, v8::internal::Assembler::vcvt_f64_s32(), and v8::internal::Assembler::vmov().

Referenced by IntPtrToDouble(), MaterialiseValueNode(), and SmiToDouble().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IntPtrToDouble()

void v8::internal::maglev::MaglevAssembler::IntPtrToDouble ( DoubleRegister  result,
Register  src 
)
inline

Definition at line 1268 of file maglev-assembler-arm-inl.h.

1269  {
1270  return Int32ToDouble(result, src);
1271 }
void Int32ToDouble(DoubleRegister result, Register src)

References Int32ToDouble(), and v8::base::internal::result.

Referenced by MaterialiseValueNode().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsCallableAndNotUndetectable()

Condition v8::internal::maglev::MaglevAssembler::IsCallableAndNotUndetectable ( Register  map,
Register  scratch 
)
inline

Definition at line 717 of file maglev-assembler-arm-inl.h.

718  {
719  ldrb(scratch, FieldMemOperand(map, Map::kBitFieldOffset));
720  and_(scratch, scratch,
721  Operand(Map::Bits1::IsUndetectableBit::kMask |
722  Map::Bits1::IsCallableBit::kMask));
723  cmp(scratch, Operand(Map::Bits1::IsCallableBit::kMask));
724  return kEqual;
725 }
void ldrb(Register dst, const MemOperand &src, Condition cond=al)

References v8::internal::Assembler::and_(), v8::internal::Assembler::cmp(), v8::internal::FieldMemOperand(), v8::internal::kEqual, and v8::internal::Assembler::ldrb().

Referenced by TestTypeOf().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsDeoptLabel()

bool v8::internal::maglev::MaglevAssembler::IsDeoptLabel ( Label label)
inline

Definition at line 995 of file maglev-assembler.h.

995  {
996  for (auto deopt : code_gen_state_->eager_deopts()) {
997  if (deopt->deopt_entry_label() == label) {
998  return true;
999  }
1000  }
1001  return false;
1002 }
const std::vector< EagerDeoptInfo * > & eager_deopts() const

References code_gen_state_, and v8::internal::maglev::MaglevCodeGenState::eager_deopts().

Referenced by Jump(), and JumpToDeopt().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsNotCallableNorUndetactable()

Condition v8::internal::maglev::MaglevAssembler::IsNotCallableNorUndetactable ( Register  map,
Register  scratch 
)
inline

Definition at line 727 of file maglev-assembler-arm-inl.h.

728  {
729  ldrb(scratch, FieldMemOperand(map, Map::kBitFieldOffset));
730  tst(scratch, Operand(Map::Bits1::IsUndetectableBit::kMask |
731  Map::Bits1::IsCallableBit::kMask));
732  return kEqual;
733 }

References v8::internal::FieldMemOperand(), v8::internal::kEqual, v8::internal::Assembler::ldrb(), and v8::internal::Assembler::tst().

Referenced by TestTypeOf().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsRootConstant()

Condition v8::internal::maglev::MaglevAssembler::IsRootConstant ( Input  input,
RootIndex  root_index 
)
inline

Definition at line 266 of file maglev-assembler-arm-inl.h.

267  {
268  if (input.operand().IsRegister()) {
269  CompareRoot(ToRegister(input), root_index);
270  } else {
271  DCHECK(input.operand().IsStackSlot());
272  TemporaryRegisterScope temps(this);
273  Register scratch = temps.AcquireScratch();
274  ldr(scratch, ToMemOperand(input));
275  CompareRoot(scratch, root_index);
276  }
277  return eq;
278 }

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::MacroAssembler::CompareRoot(), v8::internal::DCHECK(), v8::internal::eq, v8::internal::compiler::InstructionOperand::IsRegister(), v8::internal::compiler::InstructionOperand::IsStackSlot(), v8::internal::Assembler::ldr(), v8::internal::maglev::ValueLocation::operand(), ToMemOperand(), and v8::internal::maglev::ToRegister().

+ Here is the call graph for this function:

◆ Jump()

void v8::internal::maglev::MaglevAssembler::Jump ( Label target,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 891 of file maglev-assembler-arm-inl.h.

891  {
892  // Any eager deopts should go through JumpIf to enable us to support the
893  // `--deopt-every-n-times` stress mode. See EmitEagerDeoptStress.
894  DCHECK(!IsDeoptLabel(target));
895  b(target);
896 }

References v8::internal::Assembler::b(), v8::internal::DCHECK(), and IsDeoptLabel().

Referenced by v8::internal::maglev::AllocateSlow(), AssertElidedWriteBarrier(), Branch(), CheckAndEmitDeferredWriteBarrier(), EnsureWritableFastElements(), JumpIfHoleNan(), MaterialiseValueNode(), SmiTagIntPtrAndJumpIfSuccess(), SmiTagUint32AndJumpIfSuccess(), TestTypeOf(), ToBoolean(), ToUint8Clamped(), TruncateDoubleToInt32(), and TryChangeFloat64ToIndex().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ JumpIf()

void v8::internal::maglev::MaglevAssembler::JumpIf ( Condition  cond,
Label target,
Label::Distance  distance = Label::kFar 
)
inline

◆ JumpIfByte()

void v8::internal::maglev::MaglevAssembler::JumpIfByte ( Condition  cc,
Register  value,
int32_t  byte,
Label target,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 937 of file maglev-assembler-arm-inl.h.

938  {
939  cmp(value, Operand(byte));
940  b(cc, target);
941 }

References v8::internal::Assembler::b(), v8::internal::cc, v8::internal::Assembler::cmp(), and v8::internal::value.

+ Here is the call graph for this function:

◆ JumpIfHoleNan()

void v8::internal::maglev::MaglevAssembler::JumpIfHoleNan ( DoubleRegister  value,
Register  scratch,
Label target,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 981 of file maglev-assembler-arm-inl.h.

982  {
983  // TODO(leszeks): Right now this only accepts Zone-allocated target labels.
984  // This works because all callsites are jumping to either a deopt, deferred
985  // code, or a basic block. If we ever need to jump to an on-stack label, we
986  // have to add support for it here change the caller to pass a ZoneLabelRef.
987  DCHECK(compilation_info()->zone()->Contains(target));
988  ZoneLabelRef is_hole = ZoneLabelRef::UnsafeFromLabelPointer(target);
989  ZoneLabelRef is_not_hole(this);
993  [](MaglevAssembler* masm, DoubleRegister value, Register scratch,
994  ZoneLabelRef is_hole, ZoneLabelRef is_not_hole) {
995  masm->VmovHigh(scratch, value);
996  masm->CompareInt32AndJumpIf(scratch, kHoleNanUpper32, kEqual,
997  *is_hole);
998 #ifdef V8_ENABLE_EXPERIMENTAL_UNDEFINED_DOUBLE
999  masm->CompareInt32AndJumpIf(scratch, kUndefinedNanUpper32,
1000  kEqual, *is_hole);
1001 #endif // V8_ENABLE_EXPERIMENTAL_UNDEFINED_DOUBLE
1002  masm->Jump(*is_not_hole);
1003  },
1004  value, scratch, is_hole, is_not_hole));
1005  bind(*is_not_hole);
1006 }
MaglevCompilationInfo * compilation_info() const
static ZoneLabelRef UnsafeFromLabelPointer(Label *label)
bool Contains(const HeapObjectSet &s, Tagged< HeapObject > o)
constexpr uint32_t kHoleNanUpper32
Definition: globals.h:1967

References v8::internal::Assembler::bind(), CompareInt32AndJumpIf(), compilation_info(), v8::internal::maglev::ConditionForNaN(), v8::internal::anonymous_namespace{read-only-promotion.cc}::Contains(), v8::internal::DCHECK(), Jump(), JumpIf(), v8::internal::kEqual, v8::internal::kHoleNanUpper32, MakeDeferredCode(), v8::internal::maglev::ZoneLabelRef::UnsafeFromLabelPointer(), v8::internal::value, v8::internal::MacroAssembler::VFPCompareAndSetFlags(), v8::internal::MacroAssembler::VmovHigh(), and v8::internal::Assembler::zone().

+ Here is the call graph for this function:

◆ JumpIfJSAnyIsNotPrimitive()

void v8::internal::maglev::MaglevAssembler::JumpIfJSAnyIsNotPrimitive ( Register  heap_object,
Label target,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 828 of file maglev-assembler-arm-inl.h.

829  {
830  // If the type of the result (stored in its map) is less than
831  // FIRST_JS_RECEIVER_TYPE, it is not an object in the ECMA sense.
832  static_assert(LAST_JS_RECEIVER_TYPE == LAST_TYPE);
833  TemporaryRegisterScope temps(this);
834  Register scratch = temps.AcquireScratch();
835  MacroAssembler::CompareObjectType(heap_object, scratch, scratch,
836  FIRST_JS_RECEIVER_TYPE);
837  JumpIf(kUnsignedGreaterThanEqual, target, distance);
838 }

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::MacroAssembler::CompareObjectType(), JumpIf(), v8::internal::kUnsignedGreaterThanEqual, and v8::internal::LAST_TYPE.

+ Here is the call graph for this function:

◆ JumpIfNan()

void v8::internal::maglev::MaglevAssembler::JumpIfNan ( DoubleRegister  value,
Label target,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 1027 of file maglev-assembler-arm-inl.h.

1028  {
1030  JumpIf(ConditionForNaN(), target, distance);
1031 }

References v8::internal::maglev::ConditionForNaN(), JumpIf(), v8::internal::value, and v8::internal::MacroAssembler::VFPCompareAndSetFlags().

+ Here is the call graph for this function:

◆ JumpIfNotCallable()

void v8::internal::maglev::MaglevAssembler::JumpIfNotCallable ( Register  object,
Register  scratch,
CheckType  check_type,
Label target,
Label::Distance  distance = Label::kFar 
)

Definition at line 122 of file maglev-assembler.cc.

124  {
125  if (check_type == CheckType::kCheckHeapObject) {
126  JumpIfSmi(object, target, distance);
127  } else if (v8_flags.debug_code) {
128  AssertNotSmi(object);
129  }
130  LoadMap(scratch, object);
131  static_assert(Map::kBitFieldOffsetEnd + 1 - Map::kBitFieldOffset == 1);
132  TestUint8AndJumpIfAllClear(FieldMemOperand(scratch, Map::kBitFieldOffset),
133  Map::Bits1::IsCallableBit::kMask, target,
134  distance);
135 }
void TestUint8AndJumpIfAllClear(MemOperand operand, uint8_t mask, Label *target, Label::Distance distance=Label::kFar)

References v8::internal::MacroAssembler::AssertNotSmi(), v8::internal::FieldMemOperand(), JumpIfSmi(), v8::internal::maglev::kCheckHeapObject, v8::internal::MacroAssembler::LoadMap(), TestUint8AndJumpIfAllClear(), and v8::internal::v8_flags.

+ Here is the call graph for this function:

◆ JumpIfNotHoleNan() [1/2]

void v8::internal::maglev::MaglevAssembler::JumpIfNotHoleNan ( DoubleRegister  value,
Register  scratch,
Label target,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 1008 of file maglev-assembler-arm-inl.h.

1010  {
1011  JumpIfNotNan(value, target, distance);
1012  VmovHigh(scratch, value);
1013  CompareInt32AndJumpIf(scratch, kHoleNanUpper32, kNotEqual, target, distance);
1014 }
void VmovHigh(Register dst, DwVfpRegister src)
void JumpIfNotNan(DoubleRegister value, Label *target, Label::Distance distance=Label::kFar)
void CompareInt32AndJumpIf(Register r1, Register r2, Condition cond, Label *target, Label::Distance distance=Label::kFar)

References CompareInt32AndJumpIf(), JumpIfNotNan(), v8::internal::kHoleNanUpper32, v8::internal::kNotEqual, v8::internal::value, and v8::internal::MacroAssembler::VmovHigh().

Referenced by MaterialiseValueNode().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ JumpIfNotHoleNan() [2/2]

void v8::internal::maglev::MaglevAssembler::JumpIfNotHoleNan ( MemOperand  operand,
Label target,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 1016 of file maglev-assembler-arm-inl.h.

1017  {
1018  MaglevAssembler::TemporaryRegisterScope temps(this);
1019  Register upper_bits = temps.AcquireScratch();
1020  DCHECK(operand.IsImmediateOffset());
1021  ldr(upper_bits, MemOperand(operand.rn(), operand.offset() + (kDoubleSize / 2),
1022  operand.am()));
1023  CompareInt32AndJumpIf(upper_bits, kHoleNanUpper32, kNotEqual, target,
1024  distance);
1025 }
constexpr int kDoubleSize
Definition: globals.h:408

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::MemOperand::am(), CompareInt32AndJumpIf(), v8::internal::DCHECK(), v8::internal::MemOperand::IsImmediateOffset(), v8::internal::kDoubleSize, v8::internal::kHoleNanUpper32, v8::internal::kNotEqual, v8::internal::Assembler::ldr(), v8::internal::MemOperand::offset(), and v8::internal::MemOperand::rn().

+ Here is the call graph for this function:

◆ JumpIfNotNan()

void v8::internal::maglev::MaglevAssembler::JumpIfNotNan ( DoubleRegister  value,
Label target,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 1033 of file maglev-assembler-arm-inl.h.

1034  {
1036  JumpIf(NegateCondition(ConditionForNaN()), target, distance);
1037 }

References v8::internal::maglev::ConditionForNaN(), JumpIf(), v8::internal::NegateCondition(), v8::internal::value, and v8::internal::MacroAssembler::VFPCompareAndSetFlags().

Referenced by JumpIfNotHoleNan().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ JumpIfNotObjectType()

void v8::internal::maglev::MaglevAssembler::JumpIfNotObjectType ( Register  heap_object,
InstanceType  type,
Label target,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 750 of file maglev-assembler-arm-inl.h.

753  {
754  TemporaryRegisterScope temps(this);
755  Register scratch = temps.AcquireScratch();
756  CompareObjectType(heap_object, scratch, scratch, type);
757  JumpIf(kNotEqual, target, distance);
758 }

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::MacroAssembler::CompareObjectType(), JumpIf(), v8::internal::kNotEqual, and v8::internal::tracing::type.

+ Here is the call graph for this function:

◆ JumpIfNotRoot()

void v8::internal::maglev::MaglevAssembler::JumpIfNotRoot ( Register  with,
RootIndex  index,
Label if_not_equal,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 921 of file maglev-assembler-arm-inl.h.

923  {
924  MacroAssembler::JumpIfNotRoot(with, index, if_not_equal);
925 }
void JumpIfNotRoot(Register with, RootIndex index, Label *if_not_equal)

References v8::internal::index, and v8::internal::MacroAssembler::JumpIfNotRoot().

+ Here is the call graph for this function:

◆ JumpIfNotSeqOneByteString()

void v8::internal::maglev::MaglevAssembler::JumpIfNotSeqOneByteString ( Register  heap_object,
Label target,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 1027 of file maglev-assembler-inl.h.

1028  {
1029  TemporaryRegisterScope temps(this);
1030  Register scratch = temps.AcquireScratch();
1031 #ifdef V8_COMPRESS_POINTERS
1032  LoadCompressedMap(scratch, heap_object);
1033 #else
1034  LoadMap(scratch, heap_object);
1035 #endif
1036  JumpIfSeqOneByteStringMap(scratch, target, distance, false);
1037 }
void LoadCompressedMap(Register dst, Register object)
void JumpIfSeqOneByteStringMap(Register map, Label *target, Label::Distance distance=Label::kFar, bool jump_if_true=true)

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), JumpIfSeqOneByteStringMap(), v8::internal::MacroAssembler::LoadCompressedMap(), and v8::internal::MacroAssembler::LoadMap().

+ Here is the call graph for this function:

◆ JumpIfNotSmi()

void v8::internal::maglev::MaglevAssembler::JumpIfNotSmi ( Register  src,
Label on_not_smi,
Label::Distance  near_jump = Label::kFar 
)
inline

Definition at line 932 of file maglev-assembler-arm-inl.h.

933  {
934  MacroAssembler::JumpIfNotSmi(src, on_smi);
935 }
void JumpIfNotSmi(Register value, Label *not_smi_label)

References v8::internal::MacroAssembler::JumpIfNotSmi().

Referenced by AssertElidedWriteBarrier(), and EmitEagerDeoptIfNotSmi().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ JumpIfNotString()

void v8::internal::maglev::MaglevAssembler::JumpIfNotString ( Register  heap_object,
Label target,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 1014 of file maglev-assembler-inl.h.

1016  {
1017  TemporaryRegisterScope temps(this);
1018  Register scratch = temps.AcquireScratch();
1019 #ifdef V8_COMPRESS_POINTERS
1020  LoadCompressedMap(scratch, heap_object);
1021 #else
1022  LoadMap(scratch, heap_object);
1023 #endif
1024  JumpIfStringMap(scratch, target, distance, false);
1025 }
void JumpIfStringMap(Register map, Label *target, Label::Distance distance=Label::kFar, bool jump_if_true=true)

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), JumpIfStringMap(), v8::internal::MacroAssembler::LoadCompressedMap(), and v8::internal::MacroAssembler::LoadMap().

+ Here is the call graph for this function:

◆ JumpIfNotUndetectable()

void v8::internal::maglev::MaglevAssembler::JumpIfNotUndetectable ( Register  object,
Register  scratch,
CheckType  check_type,
Label target,
Label::Distance  distance = Label::kFar 
)

Definition at line 90 of file maglev-assembler.cc.

92  {
93  if (check_type == CheckType::kCheckHeapObject) {
94  JumpIfSmi(object, target, distance);
95  } else if (v8_flags.debug_code) {
96  AssertNotSmi(object);
97  }
98  // For heap objects, check the map's undetectable bit.
99  LoadMap(scratch, object);
100  TestUint8AndJumpIfAllClear(FieldMemOperand(scratch, Map::kBitFieldOffset),
101  Map::Bits1::IsUndetectableBit::kMask, target,
102  distance);
103 }

References v8::internal::MacroAssembler::AssertNotSmi(), v8::internal::FieldMemOperand(), JumpIfSmi(), v8::internal::maglev::kCheckHeapObject, v8::internal::MacroAssembler::LoadMap(), TestUint8AndJumpIfAllClear(), and v8::internal::v8_flags.

+ Here is the call graph for this function:

◆ JumpIfObjectType()

void v8::internal::maglev::MaglevAssembler::JumpIfObjectType ( Register  heap_object,
InstanceType  type,
Label target,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 741 of file maglev-assembler-arm-inl.h.

743  {
744  TemporaryRegisterScope temps(this);
745  Register scratch = temps.AcquireScratch();
746  CompareObjectType(heap_object, scratch, scratch, type);
747  JumpIf(kEqual, target, distance);
748 }

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::MacroAssembler::CompareObjectType(), JumpIf(), v8::internal::kEqual, and v8::internal::tracing::type.

+ Here is the call graph for this function:

◆ JumpIfObjectTypeInRange()

void v8::internal::maglev::MaglevAssembler::JumpIfObjectTypeInRange ( Register  heap_object,
InstanceType  lower_limit,
InstanceType  higher_limit,
Label target,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 781 of file maglev-assembler-arm-inl.h.

785  {
786  TemporaryRegisterScope temps(this);
787  Register scratch = temps.AcquireScratch();
788  CompareObjectTypeRange(heap_object, scratch, scratch, scratch, lower_limit,
789  higher_limit);
790  JumpIf(kUnsignedLessThanEqual, target, distance);
791 }

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::MacroAssembler::CompareObjectTypeRange(), JumpIf(), and v8::internal::kUnsignedLessThanEqual.

+ Here is the call graph for this function:

◆ JumpIfObjectTypeNotInRange()

void v8::internal::maglev::MaglevAssembler::JumpIfObjectTypeNotInRange ( Register  heap_object,
InstanceType  lower_limit,
InstanceType  higher_limit,
Label target,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 793 of file maglev-assembler-arm-inl.h.

795  {
796  TemporaryRegisterScope temps(this);
797  Register scratch = temps.AcquireScratch();
798  CompareObjectTypeRange(heap_object, scratch, scratch, scratch, lower_limit,
799  higher_limit);
800  JumpIf(kUnsignedGreaterThan, target, distance);
801 }

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::MacroAssembler::CompareObjectTypeRange(), JumpIf(), and v8::internal::kUnsignedGreaterThan.

+ Here is the call graph for this function:

◆ JumpIfRoot()

void v8::internal::maglev::MaglevAssembler::JumpIfRoot ( Register  with,
RootIndex  index,
Label if_equal,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 915 of file maglev-assembler-arm-inl.h.

917  {
918  MacroAssembler::JumpIfRoot(with, index, if_equal);
919 }
void JumpIfRoot(Register with, RootIndex index, Label *if_equal)

References v8::internal::index, and v8::internal::MacroAssembler::JumpIfRoot().

Referenced by TestTypeOf(), and ToBoolean().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ JumpIfSeqOneByteStringMap()

void v8::internal::maglev::MaglevAssembler::JumpIfSeqOneByteStringMap ( Register  map,
Label target,
Label::Distance  distance = Label::kFar,
bool  jump_if_true = true 
)
inline

Definition at line 956 of file maglev-assembler-inl.h.

959  {
960  Label fallthrough;
961  Label* target_if_false = jump_if_true ? &fallthrough : target;
962  Label::Distance distance_if_false = jump_if_true ? Label::kNear : distance;
963 
964 #if V8_STATIC_ROOTS_BOOL
965  // All string maps are allocated at the start of the read only heap. Thus,
966  // non-strings must have maps with larger (compressed) addresses.
967  static_assert(
968  InstanceTypeChecker::kUniqueMapRangeOfStringType::kSeqString.first == 0);
969 
971  map, InstanceTypeChecker::kUniqueMapRangeOfStringType::kSeqString.second,
972  kUnsignedGreaterThan, target_if_false, distance_if_false);
973  static_assert(base::bits::CountPopulation(
974  InstanceTypeChecker::kStringMapEncodingMask) == 1);
975  static_assert(InstanceTypeChecker::kTwoByteStringMapBit ==
976  InstanceTypeChecker::kStringMapEncodingMask);
977  if (jump_if_true) {
978  TestInt32AndJumpIfAllClear(map, InstanceTypeChecker::kStringMapEncodingMask,
979  target, distance);
980  } else {
981  TestInt32AndJumpIfAnySet(map, InstanceTypeChecker::kStringMapEncodingMask,
982  target, distance);
983  }
984 #else
985 #ifdef V8_COMPRESS_POINTERS
986  DecompressTagged(map, map);
987 #endif
988  static_assert(FIRST_STRING_TYPE == FIRST_TYPE);
989  TemporaryRegisterScope temps(this);
990  Register instance_type = temps.AcquireScratch();
991  Condition jump_cond = CompareInstanceTypeRange(map, instance_type, FIRST_TYPE,
993  JumpIf(NegateCondition(jump_cond), target_if_false, distance_if_false);
996  jump_if_true ? kEqual : kNotEqual, target, distance);
997 #endif
998 
999  bind(&fallthrough);
1000 }
void TestInt32AndJumpIfAllClear(Register r1, int32_t mask, Label *target, Label::Distance distance=Label::kFar)
void TestInt32AndJumpIfAnySet(Register r1, int32_t mask, Label *target, Label::Distance distance=Label::kFar)
constexpr unsigned CountPopulation(T value) requires(std
Definition: bits.h:26
constexpr uint32_t kStringRepresentationAndEncodingMask
Definition: instance-type.h:61
constexpr uint32_t kSeqOneByteStringTag
Definition: instance-type.h:63

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), AndInt32(), v8::internal::Assembler::bind(), CompareInstanceTypeRange(), CompareInt32AndJumpIf(), v8::base::bits::CountPopulation(), v8::internal::MacroAssembler::DecompressTagged(), v8::internal::FIRST_TYPE, JumpIf(), v8::internal::kEqual, v8::internal::Label::kNear, v8::internal::kNotEqual, v8::internal::kSeqOneByteStringTag, v8::internal::kStringRepresentationAndEncodingMask, v8::internal::kUnsignedGreaterThan, v8::internal::LAST_STRING_TYPE, v8::internal::NegateCondition(), TestInt32AndJumpIfAllClear(), and TestInt32AndJumpIfAnySet().

Referenced by JumpIfNotSeqOneByteString().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ JumpIfSmi()

void v8::internal::maglev::MaglevAssembler::JumpIfSmi ( Register  src,
Label on_smi,
Label::Distance  near_jump = Label::kFar 
)
inline

Definition at line 927 of file maglev-assembler-arm-inl.h.

928  {
929  MacroAssembler::JumpIfSmi(src, on_smi);
930 }
void JumpIfSmi(Register value, Label *smi_label)

References v8::internal::MacroAssembler::JumpIfSmi().

Referenced by CheckAndEmitDeferredWriteBarrier(), EmitEagerDeoptIfSmi(), JumpIfNotCallable(), JumpIfNotUndetectable(), JumpIfUndetectable(), and TestTypeOf().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ JumpIfString()

void v8::internal::maglev::MaglevAssembler::JumpIfString ( Register  heap_object,
Label target,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 1002 of file maglev-assembler-inl.h.

1003  {
1004  TemporaryRegisterScope temps(this);
1005  Register scratch = temps.AcquireScratch();
1006 #ifdef V8_COMPRESS_POINTERS
1007  LoadCompressedMap(scratch, heap_object);
1008 #else
1009  LoadMap(scratch, heap_object);
1010 #endif
1011  JumpIfStringMap(scratch, target, distance, true);
1012 }

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), JumpIfStringMap(), v8::internal::MacroAssembler::LoadCompressedMap(), and v8::internal::MacroAssembler::LoadMap().

+ Here is the call graph for this function:

◆ JumpIfStringMap()

void v8::internal::maglev::MaglevAssembler::JumpIfStringMap ( Register  map,
Label target,
Label::Distance  distance = Label::kFar,
bool  jump_if_true = true 
)
inline

Definition at line 934 of file maglev-assembler-inl.h.

936  {
937 #if V8_STATIC_ROOTS_BOOL
938  // All string maps are allocated at the start of the read only heap. Thus,
939  // non-strings must have maps with larger (compressed) addresses.
941  map, InstanceTypeChecker::kStringMapUpperBound,
942  jump_if_true ? kUnsignedLessThanEqual : kUnsignedGreaterThan, target,
943  distance);
944 #else
945 #ifdef V8_COMPRESS_POINTERS
946  DecompressTagged(map, map);
947 #endif
948  static_assert(FIRST_STRING_TYPE == FIRST_TYPE);
950  map, LAST_STRING_TYPE,
951  jump_if_true ? kUnsignedLessThanEqual : kUnsignedGreaterThan, target,
952  distance);
953 #endif
954 }
void CompareInstanceTypeAndJumpIf(Register map, InstanceType type, Condition cond, Label *target, Label::Distance distance)

References CompareInstanceTypeAndJumpIf(), CompareInt32AndJumpIf(), v8::internal::MacroAssembler::DecompressTagged(), v8::internal::FIRST_TYPE, v8::internal::kUnsignedGreaterThan, v8::internal::kUnsignedLessThanEqual, and v8::internal::LAST_STRING_TYPE.

Referenced by JumpIfNotString(), and JumpIfString().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ JumpIfUndetectable()

void v8::internal::maglev::MaglevAssembler::JumpIfUndetectable ( Register  object,
Register  scratch,
CheckType  check_type,
Label target,
Label::Distance  distance = Label::kFar 
)

Definition at line 105 of file maglev-assembler.cc.

107  {
108  Label detectable;
109  if (check_type == CheckType::kCheckHeapObject) {
110  JumpIfSmi(object, &detectable, Label::kNear);
111  } else if (v8_flags.debug_code) {
112  AssertNotSmi(object);
113  }
114  // For heap objects, check the map's undetectable bit.
115  LoadMap(scratch, object);
116  TestUint8AndJumpIfAnySet(FieldMemOperand(scratch, Map::kBitFieldOffset),
117  Map::Bits1::IsUndetectableBit::kMask, target,
118  distance);
119  bind(&detectable);
120 }
void TestUint8AndJumpIfAnySet(MemOperand operand, uint8_t mask, Label *target, Label::Distance distance=Label::kFar)

References v8::internal::MacroAssembler::AssertNotSmi(), v8::internal::Assembler::bind(), v8::internal::FieldMemOperand(), JumpIfSmi(), v8::internal::maglev::kCheckHeapObject, v8::internal::Label::kNear, v8::internal::MacroAssembler::LoadMap(), TestUint8AndJumpIfAnySet(), and v8::internal::v8_flags.

+ Here is the call graph for this function:

◆ JumpToDeferredIf()

template<typename Function , typename... Args>
void v8::internal::maglev::MaglevAssembler::JumpToDeferredIf ( Condition  cond,
Function &&  deferred_code_gen,
Args &&...  args 
)
inline

Definition at line 253 of file maglev-assembler-inl.h.

255  {
256  if (v8_flags.code_comments) {
257  RecordComment("-- Jump to deferred code");
258  }
259  JumpIf(cond, MakeDeferredCode<Function, Args...>(
260  std::forward<Function>(deferred_code_gen),
261  std::forward<Args>(args)...));
262 }

References v8::base::args, JumpIf(), v8::internal::AssemblerBase::RecordComment(), and v8::internal::v8_flags.

Referenced by EnsureWritableFastElements(), Prologue(), StringFromCharCode(), and ToBoolean().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ JumpToDeopt()

void v8::internal::maglev::MaglevAssembler::JumpToDeopt ( Label target)
inline

Definition at line 898 of file maglev-assembler-arm-inl.h.

898  {
899  DCHECK(IsDeoptLabel(target));
900  b(target);
901 }

References v8::internal::Assembler::b(), v8::internal::DCHECK(), and IsDeoptLabel().

Referenced by EmitEagerDeopt().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ LoadAddress()

void v8::internal::maglev::MaglevAssembler::LoadAddress ( Register  dst,
MemOperand  location 
)
inline

Definition at line 517 of file maglev-assembler-arm-inl.h.

517  {
518  DCHECK_EQ(location.am(), Offset);
519  add(dst, location.rn(), Operand(location.offset()));
520 }
constexpr AddrMode Offset

References v8::internal::Assembler::add(), v8::internal::MemOperand::am(), DCHECK_EQ, v8::internal::MemOperand::offset(), v8::internal::Offset, and v8::internal::MemOperand::rn().

+ Here is the call graph for this function:

◆ LoadAndUntagTaggedSignedField()

void v8::internal::maglev::MaglevAssembler::LoadAndUntagTaggedSignedField ( Register  result,
Register  object,
int  offset 
)
inline

Definition at line 446 of file maglev-assembler-inl.h.

448  {
450 }
void SmiUntagField(Register dst, const MemOperand &src)

References v8::internal::FieldMemOperand(), v8::base::internal::result, and v8::internal::MacroAssembler::SmiUntagField().

Referenced by StringCharCodeOrCodePointAt().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ LoadBitField()

template<typename BitField >
void v8::internal::maglev::MaglevAssembler::LoadBitField ( Register  result,
MemOperand  operand 
)
inline

Definition at line 210 of file maglev-assembler.h.

210  {
211  static constexpr int load_size = sizeof(typename BitField::BaseType);
212  LoadUnsignedField(result, operand, load_size);
213  DecodeField<BitField>(result);
214  }
void LoadUnsignedField(Register result, MemOperand operand, int element_size)

References v8::base::internal::result.

◆ LoadBoundedSizeFromObject()

void v8::internal::maglev::MaglevAssembler::LoadBoundedSizeFromObject ( Register  result,
Register  object,
int  offset 
)
inline

Definition at line 333 of file maglev-assembler-arm-inl.h.

335  {
336  Move(result, FieldMemOperand(object, offset));
337 }

References v8::internal::FieldMemOperand(), Move(), and v8::base::internal::result.

+ Here is the call graph for this function:

◆ LoadByte()

void v8::internal::maglev::MaglevAssembler::LoadByte ( Register  dst,
MemOperand  src 
)
inline

Definition at line 713 of file maglev-assembler-arm-inl.h.

713  {
714  ldrb(dst, src);
715 }

References v8::internal::Assembler::ldrb().

Referenced by CompareByteAndJumpIf(), and TestUint8AndJumpIfAllClear().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ LoadContextCellFloat64Value()

void v8::internal::maglev::MaglevAssembler::LoadContextCellFloat64Value ( DoubleRegister  value,
Register  cell 
)
inline

Definition at line 1234 of file maglev-assembler-arm-inl.h.

1235  {
1237  vldr(value, FieldMemOperand(cell, offsetof(ContextCell, double_value_)));
1238 }
void AssertContextCellState(Register cell, ContextCell::State state, Condition condition=kEqual)

References AssertContextCellState(), v8::internal::FieldMemOperand(), v8::internal::ContextCell::kFloat64, v8::internal::value, and v8::internal::Assembler::vldr().

+ Here is the call graph for this function:

◆ LoadContextCellInt32Value()

void v8::internal::maglev::MaglevAssembler::LoadContextCellInt32Value ( Register  value,
Register  cell 
)
inline

Definition at line 1228 of file maglev-assembler-arm-inl.h.

1229  {
1231  ldr(value, FieldMemOperand(cell, offsetof(ContextCell, double_value_)));
1232 }

References AssertContextCellState(), v8::internal::FieldMemOperand(), v8::internal::ContextCell::kInt32, v8::internal::Assembler::ldr(), and v8::internal::value.

+ Here is the call graph for this function:

◆ LoadContextCellState()

void v8::internal::maglev::MaglevAssembler::LoadContextCellState ( Register  state,
Register  cell 
)
inline

Definition at line 1223 of file maglev-assembler-arm-inl.h.

1224  {
1225  ldr(state, FieldMemOperand(cell, offsetof(ContextCell, state_)));
1226 }

References v8::internal::FieldMemOperand(), and v8::internal::Assembler::ldr().

Referenced by AssertContextCellState().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ LoadContextCellTaggedValue()

void v8::internal::maglev::MaglevAssembler::LoadContextCellTaggedValue ( Register  value,
Register  cell 
)
inline

Definition at line 300 of file maglev-assembler-inl.h.

301  {
302  static_assert(ContextCell::kConst == 0);
303  static_assert(ContextCell::kSmi == 1);
305  LoadTaggedField(value, cell, offsetof(ContextCell, tagged_value_));
306 }

References AssertContextCellState(), v8::internal::ContextCell::kConst, v8::internal::kLessThanEqual, v8::internal::ContextCell::kSmi, LoadTaggedField(), and v8::internal::value.

+ Here is the call graph for this function:

◆ LoadDataField()

void v8::internal::maglev::MaglevAssembler::LoadDataField ( const PolymorphicAccessInfo access_info,
Register  result,
Register  object,
Register  scratch 
)

Definition at line 66 of file maglev-assembler.cc.

68  {
69  Register load_source = object;
70  // Resolve property holder.
71  if (access_info.holder().has_value()) {
72  load_source = scratch;
73  Move(load_source, access_info.holder().value().object());
74  }
75  FieldIndex field_index = access_info.field_index();
76  if (!field_index.is_inobject()) {
77  Register load_source_object = load_source;
78  if (load_source == object) {
79  load_source = scratch;
80  }
81  // The field is in the property array, first load it from there.
82  AssertNotSmi(load_source_object);
83  LoadTaggedField(load_source, load_source_object,
84  JSReceiver::kPropertiesOrHashOffset);
85  }
86  AssertNotSmi(load_source);
87  LoadTaggedField(result, load_source, field_index.offset());
88 }

References v8::internal::MacroAssembler::AssertNotSmi(), v8::internal::maglev::PolymorphicAccessInfo::field_index(), v8::internal::maglev::PolymorphicAccessInfo::holder(), v8::internal::FieldIndex::is_inobject(), LoadTaggedField(), Move(), v8::internal::FieldIndex::offset(), and v8::base::internal::result.

+ Here is the call graph for this function:

◆ LoadExternalPointerField()

void v8::internal::maglev::MaglevAssembler::LoadExternalPointerField ( Register  result,
MemOperand  operand 
)
inline

Definition at line 339 of file maglev-assembler-arm-inl.h.

340  {
341  Move(result, operand);
342 }

References Move(), and v8::base::internal::result.

+ Here is the call graph for this function:

◆ LoadFixedArrayElement()

void v8::internal::maglev::MaglevAssembler::LoadFixedArrayElement ( Register  result,
Register  array,
Register  index 
)
inline

Definition at line 344 of file maglev-assembler-arm-inl.h.

345  {
346  if (v8_flags.debug_code) {
347  AssertObjectType(array, FIXED_ARRAY_TYPE, AbortReason::kUnexpectedValue);
349  AbortReason::kUnexpectedNegativeValue);
350  }
353 }
void LoadTaggedFieldByIndex(Register result, Register object, Register index, int scale, int offset)
void AssertObjectType(Register heap_object, InstanceType type, AbortReason reason)
constexpr int kTaggedSize
Definition: globals.h:533
#define OFFSET_OF_DATA_START(Type)
Definition: tagged-field.h:165

References AssertObjectType(), CompareInt32AndAssert(), v8::internal::index, v8::internal::kTaggedSize, v8::internal::kUnsignedGreaterThanEqual, LoadTaggedFieldByIndex(), OFFSET_OF_DATA_START, v8::base::internal::result, and v8::internal::v8_flags.

Referenced by LoadFixedArrayElementWithoutDecompressing().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ LoadFixedArrayElementWithoutDecompressing()

void v8::internal::maglev::MaglevAssembler::LoadFixedArrayElementWithoutDecompressing ( Register  result,
Register  array,
Register  index 
)
inline

Definition at line 355 of file maglev-assembler-arm-inl.h.

356  {
357  // No compression mode on arm.
359 }
void LoadFixedArrayElement(Register result, Register array, Register index)

References v8::internal::index, LoadFixedArrayElement(), and v8::base::internal::result.

+ Here is the call graph for this function:

◆ LoadFixedDoubleArrayElement()

void v8::internal::maglev::MaglevAssembler::LoadFixedDoubleArrayElement ( DoubleRegister  result,
Register  array,
Register  index 
)
inline

Definition at line 361 of file maglev-assembler-arm-inl.h.

363  {
364  TemporaryRegisterScope temps(this);
365  Register scratch = temps.AcquireScratch();
366  if (v8_flags.debug_code) {
367  AssertObjectType(array, FIXED_DOUBLE_ARRAY_TYPE,
368  AbortReason::kUnexpectedValue);
370  AbortReason::kUnexpectedNegativeValue);
371  }
372  add(scratch, array, Operand(index, LSL, kDoubleSizeLog2));
374 }
constexpr ShiftOp LSL
constexpr int kDoubleSizeLog2
Definition: globals.h:422

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::Assembler::add(), AssertObjectType(), CompareInt32AndAssert(), v8::internal::FieldMemOperand(), v8::internal::index, v8::internal::kDoubleSizeLog2, v8::internal::kUnsignedGreaterThanEqual, v8::internal::LSL, OFFSET_OF_DATA_START, v8::base::internal::result, v8::internal::v8_flags, and v8::internal::Assembler::vldr().

+ Here is the call graph for this function:

◆ LoadFloat32()

void v8::internal::maglev::MaglevAssembler::LoadFloat32 ( DoubleRegister  dst,
MemOperand  src 
)
inline

Definition at line 595 of file maglev-assembler-arm-inl.h.

595  {
596  UseScratchRegisterScope temps(this);
597  SwVfpRegister temp_vfps = SwVfpRegister::no_reg();
598  if (dst.code() < 16) {
599  temp_vfps = LowDwVfpRegister::from_code(dst.code()).low();
600  } else {
601  temp_vfps = temps.AcquireS();
602  }
603  vldr(temp_vfps, src);
604  vcvt_f64_f32(dst, temp_vfps);
605 }
void vcvt_f64_f32(const DwVfpRegister dst, const SwVfpRegister src, VFPConversionMode mode=kDefaultRoundToZero, const Condition cond=al)

References v8::internal::UseScratchRegisterScope::AcquireS(), v8::internal::RegisterBase< SubType, kAfterLastRegister >::code(), v8::internal::RegisterBase< LowDwVfpRegister, kDoubleCode_d16 >::from_code(), v8::internal::LowDwVfpRegister::low(), v8::internal::RegisterBase< SwVfpRegister, kSwVfpAfterLast >::no_reg(), v8::internal::Assembler::vcvt_f64_f32(), and v8::internal::Assembler::vldr().

+ Here is the call graph for this function:

◆ LoadFloat64()

void v8::internal::maglev::MaglevAssembler::LoadFloat64 ( DoubleRegister  dst,
MemOperand  src 
)
inline

Definition at line 612 of file maglev-assembler-arm-inl.h.

612  {
613  vldr(dst, src);
614 }

References v8::internal::Assembler::vldr().

Referenced by MaterialiseValueNode().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ LoadHeapNumberOrOddballValue()

void v8::internal::maglev::MaglevAssembler::LoadHeapNumberOrOddballValue ( DoubleRegister  result,
Register  object 
)
inline

Definition at line 452 of file maglev-assembler-inl.h.

453  {
454  static_assert(offsetof(HeapNumber, value_) ==
455  offsetof(Oddball, to_number_raw_));
456  LoadHeapNumberValue(result, object);
457 }
void LoadHeapNumberValue(DoubleRegister result, Register heap_number)

References LoadHeapNumberValue(), and v8::base::internal::result.

+ Here is the call graph for this function:

◆ LoadHeapNumberValue()

void v8::internal::maglev::MaglevAssembler::LoadHeapNumberValue ( DoubleRegister  result,
Register  heap_number 
)
inline

Definition at line 1250 of file maglev-assembler-arm-inl.h.

1251  {
1252  vldr(result, FieldMemOperand(heap_number, offsetof(HeapNumber, value_)));
1253 }

References v8::internal::FieldMemOperand(), v8::base::internal::result, and v8::internal::Assembler::vldr().

Referenced by LoadHeapNumberOrOddballValue().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ LoadInstanceType()

void v8::internal::maglev::MaglevAssembler::LoadInstanceType ( Register  instance_type,
Register  heap_object 
)
inline

Definition at line 735 of file maglev-assembler-arm-inl.h.

736  {
737  LoadMap(instance_type, heap_object);
738  ldrh(instance_type, FieldMemOperand(instance_type, Map::kInstanceTypeOffset));
739 }
void ldrh(Register dst, const MemOperand &src, Condition cond=al)

References v8::internal::FieldMemOperand(), v8::internal::Assembler::ldrh(), and v8::internal::MacroAssembler::LoadMap().

Referenced by LoadThinStringValue(), and StringCharCodeOrCodePointAt().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ LoadInt32()

void v8::internal::maglev::MaglevAssembler::LoadInt32 ( Register  dst,
MemOperand  src 
)
inline

Definition at line 587 of file maglev-assembler-arm-inl.h.

587  {
588  ldr(dst, src);
589 }

References v8::internal::Assembler::ldr().

Referenced by SeqOneByteStringCharCodeAt().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ LoadMapForCompare()

void v8::internal::maglev::MaglevAssembler::LoadMapForCompare ( Register  dst,
Register  obj 
)
inline

Definition at line 1073 of file maglev-assembler-inl.h.

1073  {
1074 #ifdef V8_COMPRESS_POINTERS
1076 #else
1077  MacroAssembler::LoadMap(dst, obj);
1078 #endif
1079 }

References v8::internal::MacroAssembler::LoadCompressedMap(), and v8::internal::MacroAssembler::LoadMap().

+ Here is the call graph for this function:

◆ LoadSignedField()

void v8::internal::maglev::MaglevAssembler::LoadSignedField ( Register  result,
MemOperand  operand,
int  element_size 
)
inline

Definition at line 384 of file maglev-assembler-arm-inl.h.

385  {
386  if (size == 1) {
387  ldrsb(result, operand);
388  } else if (size == 2) {
389  ldrsh(result, operand);
390  } else {
391  DCHECK_EQ(size, 4);
392  ldr(result, operand);
393  }
394 }
void ldrsh(Register dst, const MemOperand &src, Condition cond=al)
void ldrsb(Register dst, const MemOperand &src, Condition cond=al)

References DCHECK_EQ, v8::internal::Assembler::ldr(), v8::internal::Assembler::ldrsb(), v8::internal::Assembler::ldrsh(), v8::base::internal::result, and size().

Referenced by StringLength().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ LoadSingleCharacterString() [1/2]

void v8::internal::maglev::MaglevAssembler::LoadSingleCharacterString ( Register  result,
int  char_code 
)

Definition at line 59 of file maglev-assembler.cc.

60  {
61  DCHECK_GE(char_code, 0);
64 }
void LoadRoot(Register destination, RootIndex index) final
static constexpr RootIndex SingleCharacterStringIndex(int c)
Definition: roots.h:644
static const int32_t kMaxOneByteCharCode
Definition: string.h:512
#define DCHECK_GE(v1, v2)
Definition: logging.h:487
#define DCHECK_LT(v1, v2)
Definition: logging.h:488

References DCHECK_GE, DCHECK_LT, v8::internal::String::kMaxOneByteCharCode, v8::internal::MacroAssembler::LoadRoot(), v8::base::internal::result, and v8::internal::RootsTable::SingleCharacterStringIndex().

Referenced by StringFromCharCode().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ LoadSingleCharacterString() [2/2]

void v8::internal::maglev::MaglevAssembler::LoadSingleCharacterString ( Register  result,
Register  char_code,
Register  scratch 
)

Definition at line 222 of file maglev-assembler-arm.cc.

224  {
225  DCHECK_NE(char_code, scratch);
226  if (v8_flags.debug_code) {
227  cmp(char_code, Operand(String::kMaxOneByteCharCode));
228  Assert(kUnsignedLessThanEqual, AbortReason::kUnexpectedValue);
229  }
230  Register table = scratch;
231  add(table, kRootRegister,
234  ldr(result, MemOperand(table, char_code, LSL, kSystemPointerSizeLog2));
235 }
static int32_t RootRegisterOffsetForRootIndex(RootIndex root_index)
constexpr Register kRootRegister
Definition: register-arm.h:337
constexpr int kSystemPointerSizeLog2
Definition: globals.h:495

References v8::internal::Assembler::add(), v8::internal::MacroAssembler::Assert(), v8::internal::Assembler::cmp(), DCHECK_NE, v8::internal::kFirstSingleCharacterString, v8::internal::String::kMaxOneByteCharCode, v8::internal::kRootRegister, v8::internal::kSystemPointerSizeLog2, v8::internal::kUnsignedLessThanEqual, v8::internal::Assembler::ldr(), v8::internal::LSL, v8::base::internal::result, v8::internal::MacroAssemblerBase::RootRegisterOffsetForRootIndex(), and v8::internal::v8_flags.

+ Here is the call graph for this function:

◆ LoadTaggedField() [1/2]

void v8::internal::maglev::MaglevAssembler::LoadTaggedField ( Register  result,
MemOperand  operand 
)
inline

Definition at line 425 of file maglev-assembler-inl.h.

426  {
428 }
void LoadTaggedField(const Register &destination, const MemOperand &field_operand)

References v8::internal::MacroAssembler::LoadTaggedField(), and v8::base::internal::result.

Referenced by DeoptIfBufferDetached(), LoadContextCellTaggedValue(), LoadDataField(), LoadThinStringValue(), and StringCharCodeOrCodePointAt().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ LoadTaggedField() [2/2]

void v8::internal::maglev::MaglevAssembler::LoadTaggedField ( Register  result,
Register  object,
int  offset 
)
inline

Definition at line 430 of file maglev-assembler-inl.h.

431  {
433 }

References v8::internal::FieldMemOperand(), v8::internal::MacroAssembler::LoadTaggedField(), and v8::base::internal::result.

+ Here is the call graph for this function:

◆ LoadTaggedFieldByIndex()

void v8::internal::maglev::MaglevAssembler::LoadTaggedFieldByIndex ( Register  result,
Register  object,
Register  index,
int  scale,
int  offset 
)
inline

Definition at line 325 of file maglev-assembler-arm-inl.h.

328  {
329  add(result, object, Operand(index, LSL, ShiftFromScale(scale)));
331 }

References v8::internal::Assembler::add(), v8::internal::FieldMemOperand(), v8::internal::index, v8::internal::MacroAssembler::LoadTaggedField(), v8::internal::LSL, v8::base::internal::result, and v8::internal::maglev::ShiftFromScale().

Referenced by LoadFixedArrayElement().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ LoadTaggedFieldWithoutDecompressing()

void v8::internal::maglev::MaglevAssembler::LoadTaggedFieldWithoutDecompressing ( Register  result,
Register  object,
int  offset 
)
inline

Definition at line 1366 of file maglev-assembler-arm-inl.h.

1367  {
1369  result, FieldMemOperand(object, offset));
1370 }
void LoadTaggedFieldWithoutDecompressing(const Register &destination, const MemOperand &field_operand)

References v8::internal::FieldMemOperand(), v8::internal::MacroAssembler::LoadTaggedFieldWithoutDecompressing(), and v8::base::internal::result.

+ Here is the call graph for this function:

◆ LoadTaggedSignedField() [1/2]

void v8::internal::maglev::MaglevAssembler::LoadTaggedSignedField ( Register  result,
MemOperand  operand 
)
inline

Definition at line 435 of file maglev-assembler-inl.h.

436  {
438 }

References v8::internal::MacroAssembler::LoadTaggedField(), and v8::base::internal::result.

+ Here is the call graph for this function:

◆ LoadTaggedSignedField() [2/2]

void v8::internal::maglev::MaglevAssembler::LoadTaggedSignedField ( Register  result,
Register  object,
int  offset 
)
inline

Definition at line 440 of file maglev-assembler-inl.h.

442  {
444 }

References v8::internal::FieldMemOperand(), v8::internal::MacroAssembler::LoadTaggedField(), and v8::base::internal::result.

+ Here is the call graph for this function:

◆ LoadThinStringValue()

void v8::internal::maglev::MaglevAssembler::LoadThinStringValue ( Register  result,
Register  string 
)
inline

Definition at line 1058 of file maglev-assembler-inl.h.

1059  {
1060  if (v8_flags.slow_debug_code) {
1061  TemporaryRegisterScope temps(this);
1062  Register scratch = temps.AcquireScratch();
1063  LoadInstanceType(scratch, string);
1064  Label ok;
1065  static_assert(base::bits::CountPopulation(kThinStringTagBit) == 1);
1067  Abort(AbortReason::kUnexpectedValue);
1068  bind(&ok);
1069  }
1070  LoadTaggedField(result, string, offsetof(ThinString, actual_));
1071 }
void LoadInstanceType(Register instance_type, Register heap_object)
const uint32_t kThinStringTagBit
Definition: instance-type.h:46

References v8::internal::MacroAssembler::Abort(), v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::Assembler::bind(), v8::base::bits::CountPopulation(), v8::internal::kThinStringTagBit, LoadInstanceType(), LoadTaggedField(), v8::base::internal::result, TestInt32AndJumpIfAnySet(), and v8::internal::v8_flags.

+ Here is the call graph for this function:

◆ LoadUnalignedFloat64()

void v8::internal::maglev::MaglevAssembler::LoadUnalignedFloat64 ( DoubleRegister  dst,
Register  base,
Register  index 
)
inline

Definition at line 619 of file maglev-assembler-arm-inl.h.

621  {
622  // vldr only works on 4 bytes aligned access.
623  TemporaryRegisterScope temps(this);
624  Register scratch = temps.AcquireScratch();
625  ldr(scratch, MemOperand(base, index));
626  VmovLow(dst, scratch);
627  add(scratch, index, Operand(4));
628  ldr(scratch, MemOperand(base, scratch));
629  VmovHigh(dst, scratch);
630 }
void VmovLow(Register dst, DwVfpRegister src)

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::Assembler::add(), v8::internal::index, v8::internal::Assembler::ldr(), v8::internal::MacroAssembler::VmovHigh(), and v8::internal::MacroAssembler::VmovLow().

+ Here is the call graph for this function:

◆ LoadUnalignedFloat64AndReverseByteOrder()

void v8::internal::maglev::MaglevAssembler::LoadUnalignedFloat64AndReverseByteOrder ( DoubleRegister  dst,
Register  base,
Register  index 
)
inline

Definition at line 631 of file maglev-assembler-arm-inl.h.

632  {
633  // vldr only works on 4 bytes aligned access.
634  TemporaryRegisterScope temps(this);
635  Register scratch = temps.AcquireScratch();
636  ldr(scratch, MemOperand(base, index));
637  rev(scratch, scratch);
638  VmovHigh(dst, scratch);
639  add(scratch, index, Operand(4));
640  ldr(scratch, MemOperand(base, scratch));
641  rev(scratch, scratch);
642  VmovLow(dst, scratch);
643 }
void rev(Register dst, Register src, Condition cond=al)

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::Assembler::add(), v8::internal::index, v8::internal::Assembler::ldr(), v8::internal::Assembler::rev(), v8::internal::MacroAssembler::VmovHigh(), and v8::internal::MacroAssembler::VmovLow().

+ Here is the call graph for this function:

◆ LoadUnsignedField()

void v8::internal::maglev::MaglevAssembler::LoadUnsignedField ( Register  result,
MemOperand  operand,
int  element_size 
)
inline

Definition at line 396 of file maglev-assembler-arm-inl.h.

397  {
398  if (size == 1) {
399  ldrb(result, operand);
400  } else if (size == 2) {
401  ldrh(result, operand);
402  } else {
403  DCHECK_EQ(size, 4);
404  ldr(result, operand);
405  }
406 }

References DCHECK_EQ, v8::internal::Assembler::ldr(), v8::internal::Assembler::ldrb(), v8::internal::Assembler::ldrh(), v8::base::internal::result, and size().

+ Here is the call graph for this function:

◆ MakeDeferredCode()

template<typename Function , typename... Args>
Label * v8::internal::maglev::MaglevAssembler::MakeDeferredCode ( Function &&  deferred_code_gen,
Args &&...  args 
)
inline

Definition at line 221 of file maglev-assembler-inl.h.

222  {
223  using FunctionPointer =
224  typename detail::FunctionArgumentsTupleHelper<Function>::FunctionPointer;
225  static_assert(
226  std::is_invocable_v<FunctionPointer, MaglevAssembler*,
227  decltype(detail::CopyForDeferred(
228  std::declval<MaglevCompilationInfo*>(),
229  std::declval<Args>()))...>,
230  "Parameters of deferred_code_gen function should match arguments into "
231  "MakeDeferredCode");
232 
233  TemporaryRegisterScope scratch_scope(this);
234  using DeferredCodeInfoT = detail::DeferredCodeInfoImpl<Function>;
235  DeferredCodeInfoT* deferred_code =
236  compilation_info()->zone()->New<DeferredCodeInfoT>(
237  compilation_info(), scratch_scope.CopyForDefer(), deferred_code_gen,
238  std::forward<Args>(args)...);
239 
240 #ifdef DEBUG
241  deferred_code->set_allow_call(allow_deferred_call_);
242  deferred_code->set_allow_allocate(allow_allocate_);
243 #endif // DEBUG
244 
245  code_gen_state()->PushDeferredCode(deferred_code);
246  return &deferred_code->deferred_code_label;
247 }
T * New(Args &&... args)
Definition: zone.h:108
void PushDeferredCode(DeferredCodeInfo *deferred_code)
T CopyForDeferred(MaglevCompilationInfo *compilation_info, T &&value)

References v8::base::args, code_gen_state(), compilation_info(), v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::CopyForDefer(), v8::internal::maglev::detail::CopyForDeferred(), v8::internal::Zone::New(), v8::internal::maglev::MaglevCodeGenState::PushDeferredCode(), and v8::internal::maglev::MaglevCompilationInfo::zone().

Referenced by AssertElidedWriteBarrier(), CheckAndEmitDeferredWriteBarrier(), JumpIfHoleNan(), StringCharCodeOrCodePointAt(), ToBoolean(), and TruncateDoubleToInt32().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ MaterialiseValueNode()

void v8::internal::maglev::MaglevAssembler::MaterialiseValueNode ( Register  dst,
ValueNode value 
)

Definition at line 270 of file maglev-assembler.cc.

270  {
271  switch (value->opcode()) {
272  case Opcode::kInt32Constant: {
273  int32_t int_value = value->Cast<Int32Constant>()->value();
274  if (Smi::IsValid(int_value)) {
275  Move(dst, Smi::FromInt(int_value));
276  } else {
277  MoveHeapNumber(dst, int_value);
278  }
279  return;
280  }
281  case Opcode::kIntPtrConstant: {
282  intptr_t intptr_value = value->Cast<IntPtrConstant>()->value();
283  if (intptr_value <= std::numeric_limits<int>::max() &&
284  Smi::IsValid(static_cast<int>(intptr_value))) {
285  Move(dst, Smi::FromInt(static_cast<int>(intptr_value)));
286  } else {
287  MoveHeapNumber(dst, intptr_value);
288  }
289  return;
290  }
291  case Opcode::kUint32Constant: {
292  uint32_t uint_value = value->Cast<Uint32Constant>()->value();
293  if (Smi::IsValid(uint_value)) {
294  Move(dst, Smi::FromInt(uint_value));
295  } else {
296  MoveHeapNumber(dst, uint_value);
297  }
298  return;
299  }
301  double double_value =
302  value->Cast<Float64Constant>()->value().get_scalar();
303  int smi_value;
304  if (DoubleToSmiInteger(double_value, &smi_value)) {
305  Move(dst, Smi::FromInt(smi_value));
306  } else {
307  MoveHeapNumber(dst, double_value);
308  }
309  return;
310  }
311  default:
312  break;
313  }
314  DCHECK(!value->allocation().IsConstant());
315  DCHECK(value->allocation().IsAnyStackSlot());
316  using D = NewHeapNumberDescriptor;
317  DoubleRegister builtin_input_value = D::GetDoubleRegisterParameter(D::kValue);
318  MemOperand src = ToMemOperand(value->allocation());
319  switch (value->properties().value_representation()) {
321  Label done;
322  TemporaryRegisterScope temps(this);
323  Register scratch = temps.AcquireScratch();
324  Move(scratch, src);
325  SmiTagInt32AndJumpIfSuccess(dst, scratch, &done, Label::kNear);
326  // If smi tagging fails, instead of bailing out (deopting), we change
327  // representation to a HeapNumber.
328  Int32ToDouble(builtin_input_value, scratch);
329  CallBuiltin<Builtin::kNewHeapNumber>(builtin_input_value);
330  Move(dst, kReturnRegister0);
331  bind(&done);
332  break;
333  }
335  Label done;
336  TemporaryRegisterScope temps(this);
337  Register scratch = temps.AcquireScratch();
338  Move(scratch, src);
339  SmiTagUint32AndJumpIfSuccess(dst, scratch, &done, Label::kNear);
340  // If smi tagging fails, instead of bailing out (deopting), we change
341  // representation to a HeapNumber.
342  Uint32ToDouble(builtin_input_value, scratch);
343  CallBuiltin<Builtin::kNewHeapNumber>(builtin_input_value);
344  Move(dst, kReturnRegister0);
345  bind(&done);
346  break;
347  }
349  LoadFloat64(builtin_input_value, src);
350  CallBuiltin<Builtin::kNewHeapNumber>(builtin_input_value);
351  Move(dst, kReturnRegister0);
352  break;
354  Label done, box;
355  JumpIfNotHoleNan(src, &box, Label::kNear);
356  LoadRoot(dst, RootIndex::kUndefinedValue);
357  Jump(&done);
358  bind(&box);
359  LoadFloat64(builtin_input_value, src);
360  CallBuiltin<Builtin::kNewHeapNumber>(builtin_input_value);
361  Move(dst, kReturnRegister0);
362  bind(&done);
363  break;
364  }
366  Label done;
367  TemporaryRegisterScope temps(this);
368  Register scratch = temps.AcquireScratch();
369  Move(scratch, src);
370  SmiTagIntPtrAndJumpIfSuccess(dst, scratch, &done, Label::kNear);
371  // If smi tagging fails, instead of bailing out (deopting), we change
372  // representation to a HeapNumber.
373  IntPtrToDouble(builtin_input_value, scratch);
374  CallBuiltin<Builtin::kNewHeapNumber>(builtin_input_value);
375  Move(dst, kReturnRegister0);
376  bind(&done);
377  break;
378  }
380  UNREACHABLE();
381  }
382 }
static constexpr bool IsValid(T value) requires(std
Definition: smi.h:75
static constexpr Tagged< Smi > FromInt(int value)
Definition: smi.h:38
void IntPtrToDouble(DoubleRegister result, Register src)
void SmiTagIntPtrAndJumpIfSuccess(Register dst, Register src, Label *success, Label::Distance distance=Label::kFar)
void LoadFloat64(DoubleRegister dst, MemOperand src)
void MoveHeapNumber(Register dst, double value)
void SmiTagInt32AndJumpIfSuccess(Register dst, Register src, Label *success, Label::Distance distance=Label::kFar)
void JumpIfNotHoleNan(DoubleRegister value, Register scratch, Label *target, Label::Distance distance=Label::kFar)
void Uint32ToDouble(DoubleRegister result, Register src)
void SmiTagUint32AndJumpIfSuccess(Register dst, Register src, Label *success, Label::Distance distance=Label::kFar)
#define D(Name)
Definition: maglev-ir.h:6741
ConstantMask::For< ConstantOp::Kind::kFloat64 > kFloat64Constant
Definition: opmasks.h:244
static const Operator * IntPtrConstant(CommonOperatorBuilder *common, intptr_t value)
bool DoubleToSmiInteger(double value, int *smi_int_value)

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::Assembler::bind(), D, v8::internal::DCHECK(), v8::internal::DoubleToSmiInteger(), v8::internal::Smi::FromInt(), Int32ToDouble(), IntPtrToDouble(), v8::internal::Smi::IsValid(), Jump(), JumpIfNotHoleNan(), v8::internal::maglev::kFloat64, v8::internal::maglev::kHoleyFloat64, v8::internal::maglev::kInt32, v8::internal::maglev::kIntPtr, v8::internal::Label::kNear, v8::internal::kReturnRegister0, v8::internal::maglev::kTagged, v8::internal::maglev::kUint32, LoadFloat64(), v8::internal::MacroAssembler::LoadRoot(), Move(), MoveHeapNumber(), SmiTagInt32AndJumpIfSuccess(), SmiTagIntPtrAndJumpIfSuccess(), SmiTagUint32AndJumpIfSuccess(), ToMemOperand(), Uint32ToDouble(), v8::internal::UNREACHABLE(), and v8::internal::value.

+ Here is the call graph for this function:

◆ MaybeEmitDeoptBuiltinsCall()

void v8::internal::maglev::MaglevAssembler::MaybeEmitDeoptBuiltinsCall ( size_t  eager_deopt_count,
Label eager_deopt_entry,
size_t  lazy_deopt_count,
Label lazy_deopt_entry 
)

Definition at line 215 of file maglev-assembler-arm.cc.

218  {
219  CheckConstPool(true, false);
220 }

References v8::internal::Assembler::CheckConstPool().

+ Here is the call graph for this function:

◆ MaybeEmitPlaceHolderForDeopt()

void v8::internal::maglev::MaglevAssembler::MaybeEmitPlaceHolderForDeopt ( )
inline

Definition at line 1362 of file maglev-assembler-arm-inl.h.

1362  {
1363  // Implemented only for x64.
1364 }

Referenced by DefineLazyDeoptPoint(), and v8::internal::maglev::SaveRegisterStateForCall::DefineSafepointWithLazyDeopt().

+ Here is the caller graph for this function:

◆ Move() [1/17]

void v8::internal::maglev::MaglevAssembler::Move ( DoubleRegister  dst,
double  n 
)
inline

Definition at line 574 of file maglev-assembler-arm-inl.h.

574  {
575  vmov(dst, base::Double(n));
576 }

References v8::internal::Assembler::vmov().

+ Here is the call graph for this function:

◆ Move() [2/17]

void v8::internal::maglev::MaglevAssembler::Move ( DoubleRegister  dst,
DoubleRegister  src 
)
inline

Definition at line 549 of file maglev-assembler-arm-inl.h.

549  {
550  if (dst != src) {
551  vmov(dst, src);
552  }
553 }

References v8::internal::Assembler::vmov().

+ Here is the call graph for this function:

◆ Move() [3/17]

void v8::internal::maglev::MaglevAssembler::Move ( DoubleRegister  dst,
Float64  n 
)
inline

Definition at line 577 of file maglev-assembler-arm-inl.h.

577  {
578  vmov(dst, base::Double(n.get_bits()));
579 }

References v8::internal::Float64::get_bits(), and v8::internal::Assembler::vmov().

+ Here is the call graph for this function:

◆ Move() [4/17]

void v8::internal::maglev::MaglevAssembler::Move ( DoubleRegister  dst,
StackSlot  src 
)
inline

Definition at line 540 of file maglev-assembler-arm-inl.h.

540  {
541  vldr(dst, StackSlotOperand(src));
542 }

References StackSlotOperand(), and v8::internal::Assembler::vldr().

+ Here is the call graph for this function:

◆ Move() [5/17]

void v8::internal::maglev::MaglevAssembler::Move ( MemOperand  dst,
Register  src 
)
inline

Definition at line 543 of file maglev-assembler-arm-inl.h.

543  {
544  str(src, dst);
545 }
void str(Register src, const MemOperand &dst, Condition cond=al)

References v8::internal::Assembler::str().

+ Here is the call graph for this function:

◆ Move() [6/17]

void v8::internal::maglev::MaglevAssembler::Move ( Register  dst,
ExternalReference  src 
)
inline

Definition at line 557 of file maglev-assembler-arm-inl.h.

557  {
558  MacroAssembler::Move(dst, src);
559 }
void Move(Register dst, Tagged< Smi > smi)

References v8::internal::MacroAssembler::Move().

+ Here is the call graph for this function:

◆ Move() [7/17]

void v8::internal::maglev::MaglevAssembler::Move ( Register  dst,
Handle< HeapObject obj 
)
inline

Definition at line 580 of file maglev-assembler-arm-inl.h.

580  {
581  MacroAssembler::Move(dst, obj);
582 }

References v8::internal::MacroAssembler::Move().

+ Here is the call graph for this function:

◆ Move() [8/17]

void v8::internal::maglev::MaglevAssembler::Move ( Register  dst,
IndirectPointerTag  i 
)
inline

Definition at line 771 of file maglev-assembler-arm64-inl.h.

771  {
772  Mov(dst, Immediate(i));
773 }
void Mov(const Register &rd, const Operand &operand, DiscardMoveMode discard_mode=kDontDiscardForSameWReg)

References v8::internal::MacroAssembler::Mov().

+ Here is the call graph for this function:

◆ Move() [9/17]

void v8::internal::maglev::MaglevAssembler::Move ( Register  dst,
int32_t  i 
)
inline

Definition at line 568 of file maglev-assembler-arm-inl.h.

568  {
569  mov(dst, Operand(i));
570 }
void mov(Register rd, Register rj)

References v8::internal::MacroAssembler::mov().

+ Here is the call graph for this function:

◆ Move() [10/17]

void v8::internal::maglev::MaglevAssembler::Move ( Register  dst,
MemOperand  src 
)
inline

Definition at line 546 of file maglev-assembler-arm-inl.h.

546  {
547  ldr(dst, src);
548 }

References v8::internal::Assembler::ldr().

+ Here is the call graph for this function:

◆ Move() [11/17]

void v8::internal::maglev::MaglevAssembler::Move ( Register  dst,
Register  src 
)
inline

Definition at line 560 of file maglev-assembler-arm-inl.h.

560  {
561  if (dst != src) {
562  mov(dst, src);
563  }
564 }

References v8::internal::MacroAssembler::mov().

+ Here is the call graph for this function:

◆ Move() [12/17]

void v8::internal::maglev::MaglevAssembler::Move ( Register  dst,
StackSlot  src 
)
inline

Definition at line 537 of file maglev-assembler-arm-inl.h.

537  {
538  ldr(dst, StackSlotOperand(src));
539 }

References v8::internal::Assembler::ldr(), and StackSlotOperand().

+ Here is the call graph for this function:

◆ Move() [13/17]

void v8::internal::maglev::MaglevAssembler::Move ( Register  dst,
Tagged< Smi src 
)
inline

Definition at line 554 of file maglev-assembler-arm-inl.h.

554  {
555  MacroAssembler::Move(dst, src);
556 }

References v8::internal::MacroAssembler::Move().

+ Here is the call graph for this function:

◆ Move() [14/17]

void v8::internal::maglev::MaglevAssembler::Move ( Register  dst,
Tagged< TaggedIndex i 
)
inline

Definition at line 565 of file maglev-assembler-arm-inl.h.

565  {
566  mov(dst, Operand(i.ptr()));
567 }

References v8::internal::MacroAssembler::mov().

+ Here is the call graph for this function:

◆ Move() [15/17]

void v8::internal::maglev::MaglevAssembler::Move ( Register  dst,
uint32_t  i 
)
inline

Definition at line 571 of file maglev-assembler-arm-inl.h.

571  {
572  mov(dst, Operand(static_cast<int32_t>(i)));
573 }

References v8::internal::MacroAssembler::mov().

+ Here is the call graph for this function:

◆ Move() [16/17]

void v8::internal::maglev::MaglevAssembler::Move ( StackSlot  dst,
DoubleRegister  src 
)
inline

Definition at line 534 of file maglev-assembler-arm-inl.h.

534  {
535  vstr(src, StackSlotOperand(dst));
536 }
void vstr(const DwVfpRegister src, const Register base, int offset, const Condition cond=al)

References StackSlotOperand(), and v8::internal::Assembler::vstr().

+ Here is the call graph for this function:

◆ Move() [17/17]

void v8::internal::maglev::MaglevAssembler::Move ( StackSlot  dst,
Register  src 
)
inline

◆ MoveHeapNumber()

void v8::internal::maglev::MaglevAssembler::MoveHeapNumber ( Register  dst,
double  value 
)
inline

Definition at line 262 of file maglev-assembler-arm-inl.h.

262  {
264 }
static Operand EmbeddedNumber(double number)

References v8::internal::Operand::EmbeddedNumber(), v8::internal::MacroAssembler::mov(), and v8::internal::value.

Referenced by MaterialiseValueNode().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ MoveRepr() [1/5]

template<typename Dest , typename Source >
void v8::internal::maglev::MaglevAssembler::MoveRepr ( MachineRepresentation  repr,
Dest  dst,
Source  src 
)
inline

Definition at line 1392 of file maglev-assembler-x64-inl.h.

1393  {
1394  switch (repr) {
1396  return movl(dst, src);
1401  return movq(dst, src);
1402  default:
1403  UNREACHABLE();
1404  }
1405 }
void movl(Operand dst, Label *src)
void movq(XMMRegister dst, Operand src)

References v8::internal::kTagged, v8::internal::kTaggedPointer, v8::internal::kTaggedSigned, v8::internal::kWord32, v8::internal::kWord64, v8::internal::Assembler::movl(), v8::internal::Assembler::movq(), and v8::internal::UNREACHABLE().

Referenced by MoveRepr().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ MoveRepr() [2/5]

template<>
void v8::internal::maglev::MaglevAssembler::MoveRepr ( MachineRepresentation  repr,
MemOperand  dst,
MemOperand  src 
)
inline

Definition at line 1354 of file maglev-assembler-arm-inl.h.

1355  {
1356  TemporaryRegisterScope temps(this);
1357  Register scratch = temps.AcquireScratch();
1358  MoveRepr(repr, scratch, src);
1359  MoveRepr(repr, dst, scratch);
1360 }
void MoveRepr(MachineRepresentation repr, Dest dst, Source src)

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), and MoveRepr().

+ Here is the call graph for this function:

◆ MoveRepr() [3/5]

template<>
void v8::internal::maglev::MaglevAssembler::MoveRepr ( MachineRepresentation  repr,
MemOperand  dst,
Register  src 
)
inline

Definition at line 1341 of file maglev-assembler-arm-inl.h.

1342  {
1343  switch (repr) {
1348  return str(src, dst);
1349  default:
1350  UNREACHABLE();
1351  }
1352 }

References v8::internal::kTagged, v8::internal::kTaggedPointer, v8::internal::kTaggedSigned, v8::internal::kWord32, v8::internal::Assembler::str(), and v8::internal::UNREACHABLE().

+ Here is the call graph for this function:

◆ MoveRepr() [4/5]

template<>
void v8::internal::maglev::MaglevAssembler::MoveRepr ( MachineRepresentation  repr,
Register  dst,
MemOperand  src 
)
inline

Definition at line 1328 of file maglev-assembler-arm-inl.h.

1329  {
1330  switch (repr) {
1335  return ldr(dst, src);
1336  default:
1337  UNREACHABLE();
1338  }
1339 }

References v8::internal::kTagged, v8::internal::kTaggedPointer, v8::internal::kTaggedSigned, v8::internal::kWord32, v8::internal::Assembler::ldr(), and v8::internal::UNREACHABLE().

+ Here is the call graph for this function:

◆ MoveRepr() [5/5]

template<>
void v8::internal::maglev::MaglevAssembler::MoveRepr ( MachineRepresentation  repr,
Register  dst,
Register  src 
)
inline

Definition at line 1323 of file maglev-assembler-arm-inl.h.

1324  {
1325  Move(dst, src);
1326 }

References Move().

+ Here is the call graph for this function:

◆ MoveTagged()

void v8::internal::maglev::MaglevAssembler::MoveTagged ( Register  dst,
Handle< HeapObject obj 
)
inline

Definition at line 583 of file maglev-assembler-arm-inl.h.

583  {
584  Move(dst, obj);
585 }

References Move().

+ Here is the call graph for this function:

◆ native_context()

◆ NegateInt32()

void v8::internal::maglev::MaglevAssembler::NegateInt32 ( Register  val)
inline

Definition at line 675 of file maglev-assembler-arm-inl.h.

675  {
676  rsb(val, val, Operand(0));
677 }
void rsb(Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)

References v8::internal::Assembler::rsb().

+ Here is the call graph for this function:

◆ OrInt32() [1/2]

void v8::internal::maglev::MaglevAssembler::OrInt32 ( Register  reg,
int  mask 
)
inline

Definition at line 497 of file maglev-assembler-arm-inl.h.

497  {
498  orr(reg, reg, Operand(mask));
499 }
void orr(Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)

References v8::internal::Assembler::orr().

+ Here is the call graph for this function:

◆ OrInt32() [2/2]

void v8::internal::maglev::MaglevAssembler::OrInt32 ( Register  reg,
Register  other 
)
inline

Definition at line 505 of file maglev-assembler-arm-inl.h.

505  {
506  orr(reg, reg, other);
507 }

References v8::internal::Assembler::orr().

+ Here is the call graph for this function:

◆ OSRPrologue()

void v8::internal::maglev::MaglevAssembler::OSRPrologue ( Graph graph)

Definition at line 83 of file maglev-assembler-arm.cc.

83  {
84  TemporaryRegisterScope temps(this);
85  Register scratch = temps.AcquireScratch();
86 
87  DCHECK(graph->is_osr());
88  CHECK(!graph->has_recursive_calls());
89 
90  uint32_t source_frame_size =
91  graph->min_maglev_stackslots_for_unoptimized_frame_size();
92 
93  if (v8_flags.debug_code) {
94  add(scratch, sp,
95  Operand(source_frame_size * kSystemPointerSize +
97  cmp(scratch, fp);
98  Assert(eq, AbortReason::kOsrUnexpectedStackSize);
99  }
100 
101  uint32_t target_frame_size =
102  graph->tagged_stack_slots() + graph->untagged_stack_slots();
103  CHECK_LE(source_frame_size, target_frame_size);
104 
105  if (source_frame_size < target_frame_size) {
106  ASM_CODE_COMMENT_STRING(this, "Growing frame for OSR");
107  uint32_t additional_tagged =
108  source_frame_size < graph->tagged_stack_slots()
109  ? graph->tagged_stack_slots() - source_frame_size
110  : 0;
111  if (additional_tagged) {
112  Move(scratch, 0);
113  }
114  for (size_t i = 0; i < additional_tagged; ++i) {
115  Push(scratch);
116  }
117  uint32_t size_so_far = source_frame_size + additional_tagged;
118  CHECK_LE(size_so_far, target_frame_size);
119  if (size_so_far < target_frame_size) {
120  sub(sp, sp,
121  Operand((target_frame_size - size_so_far) * kSystemPointerSize));
122  }
123  }
124 }
refactor address components for immediate indexing make OptimizeMaglevOnNextCall optimize to turbofan instead of maglev filter for tracing turbofan compilation trace turbo cfg graph(for C1 visualizer) to a given file name") DEFINE_SLOW_TRACING_BOOL(trace_turbo_trimming
#define CHECK_LE(lhs, rhs)

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::Assembler::add(), ASM_CODE_COMMENT_STRING, v8::internal::MacroAssembler::Assert(), CHECK, CHECK_LE, v8::internal::Assembler::cmp(), v8::internal::DCHECK(), v8::internal::eq, graph(), v8::internal::anonymous_namespace{json-stringifier.cc}::i, v8::internal::StandardFrameConstants::kFixedFrameSizeFromFp, v8::internal::kSystemPointerSize, Move(), Push(), v8::internal::Assembler::sub(), and v8::internal::v8_flags.

+ Here is the call graph for this function:

◆ Pop() [1/32]

void v8::internal::MacroAssembler::Pop

◆ Pop() [2/32]

template<LoadLRMode lr_mode = kDontLoadLR>
void v8::internal::MacroAssembler::Pop ( LoadLRMode  lr_mode = kDontLoadLR)

Definition at line 928 of file macro-assembler-arm64-inl.h.

1311  {
1312  // It is not valid to pop into the same register more than once in one
1313  // instruction, not even into the zero register.
1314  DCHECK(!AreAliased(dst0, dst1, dst2, dst3));
1315  DCHECK(AreSameSizeAndType(dst0, dst1, dst2, dst3));
1316  DCHECK(dst0.is_valid());
1317 
1318  int count = 1 + dst1.is_valid() + dst2.is_valid() + dst3.is_valid();
1319  int size = dst0.SizeInBytes();
1320  DCHECK_EQ(0, (size * count) % 16);
1321 
1322  PopHelper(count, size, dst0, dst1, dst2, dst3);
1323 
1324  DCHECK_IMPLIES((lr_mode == kAuthLR), ((dst0 == lr) || (dst1 == lr) ||
1325  (dst2 == lr) || (dst3 == lr)));
1326  DCHECK_IMPLIES((lr_mode == kDontLoadLR), ((dst0 != lr) && (dst1 != lr)) &&
1327  (dst2 != lr) && (dst3 != lr));
1328 
1329 #ifdef V8_ENABLE_CONTROL_FLOW_INTEGRITY
1330  if (lr_mode == kAuthLR) {
1331  Autibsp();
1332  }
1333 #endif
1334 }
void PopHelper(int count, int size, const CPURegister &dst0, const CPURegister &dst1, const CPURegister &dst2, const CPURegister &dst3)
V8_EXPORT_PRIVATE bool AreAliased(const CPURegister &reg1, const CPURegister &reg2, const CPURegister &reg3=NoReg, const CPURegister &reg4=NoReg, const CPURegister &reg5=NoReg, const CPURegister &reg6=NoReg, const CPURegister &reg7=NoReg, const CPURegister &reg8=NoReg)
V8_EXPORT_PRIVATE bool AreSameSizeAndType(const CPURegister &reg1, const CPURegister &reg2=NoCPUReg, const CPURegister &reg3=NoCPUReg, const CPURegister &reg4=NoCPUReg, const CPURegister &reg5=NoCPUReg, const CPURegister &reg6=NoCPUReg, const CPURegister &reg7=NoCPUReg, const CPURegister &reg8=NoCPUReg)

◆ Pop() [3/32]

void v8::internal::MacroAssembler::Pop
inline

Definition at line 386 of file macro-assembler-ia32.h.

◆ Pop() [4/32]

void v8::internal::MacroAssembler::Pop

◆ Pop() [5/32]

void v8::internal::maglev::MaglevAssembler::Pop ( Register  dst)
inline

Definition at line 1286 of file maglev-assembler-arm-inl.h.

1286 { pop(dst); }

References v8::internal::MacroAssembler::pop().

+ Here is the call graph for this function:

◆ Pop() [6/32]

void v8::internal::MacroAssembler::Pop
inline

Definition at line 175 of file macro-assembler-arm.h.

175 { pop(dst); }

◆ Pop() [7/32]

void v8::internal::MacroAssembler::Pop
inline

Definition at line 393 of file macro-assembler-loong64.h.

393  {
394  Ld_d(dst, MemOperand(sp, 0));
395  Add_d(sp, sp, Operand(kSystemPointerSize));
396  }
void Ld_d(Register rd, const MemOperand &rj)

◆ Pop() [8/32]

void v8::internal::MacroAssembler::Pop
inline

Definition at line 430 of file macro-assembler-mips64.h.

430 { pop(dst); }

◆ Pop() [9/32]

void v8::internal::MacroAssembler::Pop
inline

Definition at line 496 of file macro-assembler-ppc.h.

496 { pop(dst); }

◆ Pop() [10/32]

void v8::internal::MacroAssembler::Pop
inline

Definition at line 542 of file macro-assembler-riscv.h.

542 { pop(dst); }

◆ Pop() [11/32]

void v8::internal::MacroAssembler::Pop

◆ Pop() [12/32]

void v8::internal::MacroAssembler::Pop
inline

Definition at line 385 of file macro-assembler-ia32.h.

385 { pop(dst); }

◆ Pop() [13/32]

void v8::internal::MacroAssembler::Pop
inline

Definition at line 723 of file macro-assembler-s390.h.

723 { pop(dst); }

◆ Pop() [14/32]

template<typename... Rs>
void v8::internal::MacroAssembler::Pop ( typename...  Rs)
inline

Definition at line 557 of file macro-assembler-riscv.h.

557  {
558  pop_helper(r, rs...);
559  AddWord(sp, sp, (sizeof...(rs) + 1) * kSystemPointerSize);
560  }

◆ Pop() [15/32]

void v8::internal::MacroAssembler::Pop
inline

Definition at line 499 of file macro-assembler-ppc.h.

499  {
500  LoadU64(src2, MemOperand(sp, 0));
502  addi(sp, sp, Operand(2 * kSystemPointerSize));
503  }
void addi(Register dst, Register src, const Operand &imm)
void LoadU64(Register dst, const MemOperand &mem, Register scratch=no_reg)

◆ Pop() [16/32]

void v8::internal::MacroAssembler::Pop
inline

Definition at line 433 of file macro-assembler-mips64.h.

433  {
434  DCHECK(src1 != src2);
435  Ld(src2, MemOperand(sp, 0 * kPointerSize));
436  Ld(src1, MemOperand(sp, 1 * kPointerSize));
437  Daddu(sp, sp, 2 * kPointerSize);
438  }
void Ld(Register rd, const MemOperand &rs)
constexpr int kPointerSize
Definition: globals.h:590

◆ Pop() [17/32]

void v8::internal::MacroAssembler::Pop
inline

Definition at line 726 of file macro-assembler-s390.h.

726  {
727  LoadU64(src2, MemOperand(sp, 0));
729  la(sp, MemOperand(sp, 2 * kSystemPointerSize));
730  }

◆ Pop() [18/32]

void v8::internal::MacroAssembler::Pop
inline

Definition at line 399 of file macro-assembler-loong64.h.

399  {
400  DCHECK(src1 != src2);
401  Ld_d(src2, MemOperand(sp, 0 * kSystemPointerSize));
402  Ld_d(src1, MemOperand(sp, 1 * kSystemPointerSize));
403  Add_d(sp, sp, 2 * kSystemPointerSize);
404  }

◆ Pop() [19/32]

void v8::internal::MacroAssembler::Pop
inline

Definition at line 178 of file macro-assembler-arm.h.

178  {
179  DCHECK(src1 != src2);
180  if (src1.code() > src2.code()) {
181  ldm(ia_w, sp, {src1, src2}, cond);
182  } else {
183  ldr(src2, MemOperand(sp, 4, PostIndex), cond);
184  ldr(src1, MemOperand(sp, 4, PostIndex), cond);
185  }
186  }
void ldm(BlockAddrMode am, Register base, RegList dst, Condition cond=al)
constexpr BlockAddrMode ia_w
constexpr AddrMode PostIndex

◆ Pop() [20/32]

void v8::internal::MacroAssembler::Pop
inline

Definition at line 733 of file macro-assembler-s390.h.

733  {
734  LoadU64(src3, MemOperand(sp, 0));
737  la(sp, MemOperand(sp, 3 * kSystemPointerSize));
738  }

◆ Pop() [21/32]

void v8::internal::MacroAssembler::Pop
inline

Definition at line 506 of file macro-assembler-ppc.h.

506  {
507  LoadU64(src3, MemOperand(sp, 0));
510  addi(sp, sp, Operand(3 * kSystemPointerSize));
511  }

◆ Pop() [22/32]

void v8::internal::MacroAssembler::Pop
inline

Definition at line 407 of file macro-assembler-loong64.h.

407  {
408  Ld_d(src3, MemOperand(sp, 0 * kSystemPointerSize));
409  Ld_d(src2, MemOperand(sp, 1 * kSystemPointerSize));
410  Ld_d(src1, MemOperand(sp, 2 * kSystemPointerSize));
411  Add_d(sp, sp, 3 * kSystemPointerSize);
412  }

◆ Pop() [23/32]

void v8::internal::MacroAssembler::Pop
inline

Definition at line 441 of file macro-assembler-mips64.h.

441  {
442  Ld(src3, MemOperand(sp, 0 * kPointerSize));
443  Ld(src2, MemOperand(sp, 1 * kPointerSize));
444  Ld(src1, MemOperand(sp, 2 * kPointerSize));
445  Daddu(sp, sp, 3 * kPointerSize);
446  }

◆ Pop() [24/32]

void v8::internal::MacroAssembler::Pop
inline

Definition at line 189 of file macro-assembler-arm.h.

189  {
190  DCHECK(!AreAliased(src1, src2, src3));
191  if (src1.code() > src2.code()) {
192  if (src2.code() > src3.code()) {
193  ldm(ia_w, sp, {src1, src2, src3}, cond);
194  } else {
195  ldr(src3, MemOperand(sp, 4, PostIndex), cond);
196  ldm(ia_w, sp, {src1, src2}, cond);
197  }
198  } else {
199  Pop(src2, src3, cond);
200  ldr(src1, MemOperand(sp, 4, PostIndex), cond);
201  }
202  }

◆ Pop() [25/32]

void v8::internal::MacroAssembler::Pop
inline

Definition at line 514 of file macro-assembler-ppc.h.

514  {
515  LoadU64(src4, MemOperand(sp, 0));
519  addi(sp, sp, Operand(4 * kSystemPointerSize));
520  }

◆ Pop() [26/32]

void v8::internal::MacroAssembler::Pop
inline

Definition at line 741 of file macro-assembler-s390.h.

741  {
742  LoadU64(src4, MemOperand(sp, 0));
746  la(sp, MemOperand(sp, 4 * kSystemPointerSize));
747  }

◆ Pop() [27/32]

void v8::internal::MacroAssembler::Pop
inline

Definition at line 205 of file macro-assembler-arm.h.

206  {
207  DCHECK(!AreAliased(src1, src2, src3, src4));
208  if (src1.code() > src2.code()) {
209  if (src2.code() > src3.code()) {
210  if (src3.code() > src4.code()) {
211  ldm(ia_w, sp, {src1, src2, src3, src4}, cond);
212  } else {
213  ldr(src4, MemOperand(sp, 4, PostIndex), cond);
214  ldm(ia_w, sp, {src1, src2, src3}, cond);
215  }
216  } else {
217  Pop(src3, src4, cond);
218  ldm(ia_w, sp, {src1, src2}, cond);
219  }
220  } else {
221  Pop(src2, src3, src4, cond);
222  ldr(src1, MemOperand(sp, 4, PostIndex), cond);
223  }
224  }

◆ Pop() [28/32]

void v8::internal::MacroAssembler::Pop
inline

Definition at line 523 of file macro-assembler-ppc.h.

524  {
525  LoadU64(src5, MemOperand(sp, 0));
530  addi(sp, sp, Operand(5 * kSystemPointerSize));
531  }

◆ Pop() [29/32]

void v8::internal::MacroAssembler::Pop
inline

Definition at line 750 of file macro-assembler-s390.h.

751  {
752  LoadU64(src5, MemOperand(sp, 0));
757  la(sp, MemOperand(sp, 5 * kSystemPointerSize));
758  }

◆ Pop() [30/32]

void v8::internal::MacroAssembler::Pop
inline

Definition at line 562 of file macro-assembler-riscv.h.

562  {
563  AddWord(sp, sp, Operand(count * kSystemPointerSize));
564  }

◆ Pop() [31/32]

void v8::internal::MacroAssembler::Pop
inline

Definition at line 448 of file macro-assembler-mips64.h.

448 { Daddu(sp, sp, Operand(count * kPointerSize)); }

◆ Pop() [32/32]

void v8::internal::MacroAssembler::Pop
inline

Definition at line 387 of file macro-assembler-ia32.h.

387  {
388  pop(scratch);
389  movd(dst, scratch);
390  }
void movd(XMMRegister dst, Register src)

◆ PrepareCallCFunction()

void v8::internal::maglev::MaglevAssembler::PrepareCallCFunction ( int  num_reg_arguments,
int  num_double_registers = 0 
)
inline

Definition at line 881 of file maglev-assembler-arm-inl.h.

882  {
883  MacroAssembler::PrepareCallCFunction(num_reg_arguments, num_double_registers);
884 }
void PrepareCallCFunction(int num_reg_arguments, int num_double_registers=0, Register scratch=no_reg)

References v8::internal::MacroAssembler::PrepareCallCFunction().

+ Here is the call graph for this function:

◆ Prologue()

void v8::internal::maglev::MaglevAssembler::Prologue ( Graph graph)

Definition at line 126 of file maglev-assembler-arm.cc.

126  {
127  TemporaryRegisterScope temps(this);
128  temps.Include({r4, r8});
129 
130  DCHECK(!graph->is_osr());
131 
133 
134  if (graph->has_recursive_calls()) {
135  bind(code_gen_state()->entry_label());
136  }
137 
138 #ifndef V8_ENABLE_LEAPTIERING
139  // Tiering support.
140  if (v8_flags.turbofan) {
141  using D = MaglevOptimizeCodeOrTailCallOptimizedCodeSlotDescriptor;
142  Register flags = D::GetRegisterParameter(D::kFlags);
143  Register feedback_vector = D::GetRegisterParameter(D::kFeedbackVector);
147  DCHECK(!temps.Available().has(flags));
148  DCHECK(!temps.Available().has(feedback_vector));
149  Move(feedback_vector,
150  compilation_info()->toplevel_compilation_unit()->feedback().object());
151  Condition needs_processing =
153  CodeKind::MAGLEV);
154  // Tail call on Arm produces 3 instructions, so we emit that in deferred
155  // code.
156  JumpToDeferredIf(needs_processing, [](MaglevAssembler* masm) {
158  Builtin::kMaglevOptimizeCodeOrTailCallOptimizedCodeSlot);
159  });
160  }
161 #endif // !V8_ENABLE_LEAPTIERING
162 
163  EnterFrame(StackFrame::MAGLEV);
164  // Save arguments in frame.
165  // TODO(leszeks): Consider eliding this frame if we don't make any calls
166  // that could clobber these registers.
168  Push(kJSFunctionRegister); // Callee's JS function.
169  Push(kJavaScriptCallArgCountRegister); // Actual argument count.
170 
171  // Initialize stack slots.
172  if (graph->tagged_stack_slots() > 0) {
173  ASM_CODE_COMMENT_STRING(this, "Initializing stack slots");
174  TemporaryRegisterScope temps(this);
175  Register scratch = temps.AcquireScratch();
176  Move(scratch, 0);
177 
178  // Magic value. Experimentally, an unroll size of 8 doesn't seem any
179  // worse than fully unrolled pushes.
180  const int kLoopUnrollSize = 8;
181  int tagged_slots = graph->tagged_stack_slots();
182  if (tagged_slots < kLoopUnrollSize) {
183  // If the frame is small enough, just unroll the frame fill
184  // completely.
185  for (int i = 0; i < tagged_slots; ++i) {
186  Push(scratch);
187  }
188  } else {
189  // Extract the first few slots to round to the unroll size.
190  int first_slots = tagged_slots % kLoopUnrollSize;
191  for (int i = 0; i < first_slots; ++i) {
192  Push(scratch);
193  }
194  Register unroll_counter = temps.AcquireScratch();
195  Move(unroll_counter, tagged_slots / kLoopUnrollSize);
196  // We enter the loop unconditionally, so make sure we need to loop at
197  // least once.
198  DCHECK_GT(tagged_slots / kLoopUnrollSize, 0);
199  Label loop;
200  bind(&loop);
201  for (int i = 0; i < kLoopUnrollSize; ++i) {
202  Push(scratch);
203  }
204  sub(unroll_counter, unroll_counter, Operand(1), SetCC);
205  b(kGreaterThan, &loop);
206  }
207  }
208  if (graph->untagged_stack_slots() > 0) {
209  // Extend rsp by the size of the remaining untagged part of the frame,
210  // no need to initialise these.
211  sub(sp, sp, Operand(graph->untagged_stack_slots() * kSystemPointerSize));
212  }
213 }
void EnterFrame(StackFrame::Type type, bool load_constant_pool_pointer_reg=false)
Condition LoadFeedbackVectorFlagsAndCheckIfNeedsProcessing(Register flags, Register feedback_vector, CodeKind current_code_kind)
void TailCallBuiltin(Builtin builtin, Condition cond=al)
#define __
constexpr Register kJavaScriptCallArgCountRegister
Definition: register-arm.h:319
Flag flags[]
Definition: flags.cc:292
constexpr Register kJavaScriptCallNewTargetRegister
Definition: register-arm.h:322
constexpr Register kJSFunctionRegister
Definition: register-arm.h:311
#define DCHECK_GT(v1, v2)
Definition: logging.h:486

References __, v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::AreAliased(), ASM_CODE_COMMENT_STRING, v8::internal::maglev::MaglevAssembler::TemporaryRegisterScopeBase< Derived >::Available(), v8::internal::Assembler::b(), v8::internal::MacroAssembler::BailoutIfDeoptimized(), v8::internal::Assembler::bind(), code_gen_state(), compilation_info(), D, v8::internal::DCHECK(), DCHECK_GT, v8::internal::MacroAssembler::EnterFrame(), v8::internal::flags, graph(), v8::internal::RegListBase< RegisterT >::has(), v8::internal::anonymous_namespace{json-stringifier.cc}::i, v8::internal::maglev::MaglevAssembler::TemporaryRegisterScopeBase< Derived >::Include(), JumpToDeferredIf(), v8::internal::kContextRegister, v8::internal::kGreaterThan, v8::internal::kJavaScriptCallArgCountRegister, v8::internal::kJavaScriptCallNewTargetRegister, v8::internal::kJSFunctionRegister, v8::internal::kSystemPointerSize, v8::internal::MacroAssembler::LoadFeedbackVectorFlagsAndCheckIfNeedsProcessing(), Move(), Push(), v8::internal::SetCC, v8::internal::Assembler::sub(), v8::internal::MacroAssembler::TailCallBuiltin(), and v8::internal::v8_flags.

+ Here is the call graph for this function:

◆ Push()

template<typename... T>
void v8::internal::maglev::MaglevAssembler::Push ( T...  vals)
inline

◆ PushReverse()

template<typename... T>
void v8::internal::maglev::MaglevAssembler::PushReverse ( T...  vals)
inline

Definition at line 209 of file maglev-assembler-arm-inl.h.

209  {
210  detail::PushAllHelper<T...>::PushReverse(this, vals...);
211 }

Referenced by v8::internal::maglev::detail::PushArgumentsForBuiltin().

+ Here is the caller graph for this function:

◆ ReverseByteOrder()

void v8::internal::maglev::MaglevAssembler::ReverseByteOrder ( Register  value,
int  element_size 
)
inline

Definition at line 470 of file maglev-assembler-arm-inl.h.

470  {
471  if (size == 2) {
472  rev(value, value);
473  asr(value, value, Operand(16));
474  } else if (size == 4) {
475  rev(value, value);
476  } else {
477  DCHECK_EQ(size, 1);
478  }
479 }
void asr(Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)

References v8::internal::Assembler::asr(), DCHECK_EQ, v8::internal::Assembler::rev(), size(), and v8::internal::value.

+ Here is the call graph for this function:

◆ ReverseByteOrderAndStoreUnalignedFloat64()

void v8::internal::maglev::MaglevAssembler::ReverseByteOrderAndStoreUnalignedFloat64 ( Register  base,
Register  index,
DoubleRegister  src 
)
inline

Definition at line 657 of file maglev-assembler-arm-inl.h.

658  {
659  // vstr only works on 4 bytes aligned access.
660  TemporaryRegisterScope temps(this);
661  Register scratch = temps.AcquireScratch();
662  Register index_scratch = temps.AcquireScratch();
663  VmovHigh(scratch, src);
664  rev(scratch, scratch);
665  str(scratch, MemOperand(base, index));
666  add(index_scratch, index, Operand(4));
667  VmovLow(scratch, src);
668  rev(scratch, scratch);
669  str(scratch, MemOperand(base, index_scratch));
670 }

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::Assembler::add(), v8::internal::index, v8::internal::Assembler::rev(), v8::internal::Assembler::str(), v8::internal::MacroAssembler::VmovHigh(), and v8::internal::MacroAssembler::VmovLow().

+ Here is the call graph for this function:

◆ safepoint_table_builder()

MaglevSafepointTableBuilder* v8::internal::maglev::MaglevAssembler::safepoint_table_builder ( ) const
inline

Definition at line 827 of file maglev-assembler.h.

827  {
829  }
MaglevSafepointTableBuilder * safepoint_table_builder() const

Referenced by DefineLazyDeoptPoint(), and v8::internal::maglev::SaveRegisterStateForCall::DefineSafepoint().

+ Here is the caller graph for this function:

◆ scratch_register_scope()

TemporaryRegisterScope* v8::internal::maglev::MaglevAssembler::scratch_register_scope ( ) const
inline

Definition at line 834 of file maglev-assembler.h.

834  {
836  }
TemporaryRegisterScope * scratch_register_scope_

Referenced by v8::internal::maglev::MapCompare::MapCompare().

+ Here is the caller graph for this function:

◆ SeqOneByteStringCharCodeAt()

void v8::internal::maglev::MaglevAssembler::SeqOneByteStringCharCodeAt ( Register  result,
Register  string,
Register  index 
)

Definition at line 462 of file maglev-assembler-arm.cc.

464  {
465  ASM_CODE_COMMENT(this);
466  if (v8_flags.debug_code) {
467  TemporaryRegisterScope scope(this);
468  Register scratch = scope.AcquireScratch();
469 
470  // Check if {string} is a string.
471  AssertNotSmi(string);
472  LoadMap(scratch, string);
473  CompareInstanceTypeRange(scratch, scratch, FIRST_STRING_TYPE,
475  Check(kUnsignedLessThanEqual, AbortReason::kUnexpectedValue);
476 
477  // Check if {string} is a sequential one-byte string.
480  AbortReason::kUnexpectedValue);
481 
482  LoadInt32(scratch, FieldMemOperand(string, offsetof(String, length_)));
484  AbortReason::kUnexpectedValue);
485  }
486 
487  TemporaryRegisterScope scope(this);
488  Register scratch = scope.AcquireScratch();
489  add(scratch, index,
490  Operand(OFFSET_OF_DATA_START(SeqOneByteString) - kHeapObjectTag));
491  ldrb(result, MemOperand(string, scratch));
492 }
void Check(Condition cond, AbortReason reason)
void LoadInt32(Register dst, MemOperand src)
const int kHeapObjectTag
Definition: v8-internal.h:72

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::Assembler::add(), AndInt32(), ASM_CODE_COMMENT, v8::internal::MacroAssembler::AssertNotSmi(), v8::internal::MacroAssembler::Check(), CompareInstanceTypeRange(), CompareInt32AndAssert(), v8::internal::FieldMemOperand(), v8::internal::index, v8::internal::kEqual, v8::internal::kHeapObjectTag, v8::internal::kSeqOneByteStringTag, v8::internal::kStringRepresentationAndEncodingMask, v8::internal::kUnsignedLessThan, v8::internal::kUnsignedLessThanEqual, v8::internal::LAST_STRING_TYPE, v8::internal::Assembler::ldrb(), LoadInt32(), v8::internal::MacroAssembler::LoadMap(), OFFSET_OF_DATA_START, v8::base::internal::result, and v8::internal::v8_flags.

Referenced by StringCharCodeOrCodePointAt().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SetMapAsRoot()

void v8::internal::maglev::MaglevAssembler::SetMapAsRoot ( Register  object,
RootIndex  map 
)
inline

Definition at line 804 of file maglev-assembler-inl.h.

804  {
805  TemporaryRegisterScope temps(this);
806  Register scratch = temps.AcquireScratch();
807  LoadTaggedRoot(scratch, map);
809 }
static constexpr int kMapOffset
Definition: heap-object.h:498
void LoadTaggedRoot(Register destination, RootIndex index)
void StoreTaggedFieldNoWriteBarrier(Register object, int offset, Register value)

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::HeapObject::kMapOffset, v8::internal::MacroAssembler::LoadTaggedRoot(), and StoreTaggedFieldNoWriteBarrier().

Referenced by AllocateHeapNumber(), and AllocateTwoByteString().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SetSlotAddressForFixedArrayElement()

void v8::internal::maglev::MaglevAssembler::SetSlotAddressForFixedArrayElement ( Register  slot_reg,
Register  object,
Register  index 
)
inline

Definition at line 413 of file maglev-assembler-arm-inl.h.

414  {
415  add(slot_reg, object,
417  add(slot_reg, slot_reg, Operand(index, LSL, kTaggedSizeLog2));
418 }
constexpr int kTaggedSizeLog2
Definition: globals.h:534

References v8::internal::Assembler::add(), v8::internal::index, v8::internal::kHeapObjectTag, v8::internal::kTaggedSizeLog2, v8::internal::LSL, and OFFSET_OF_DATA_START.

Referenced by CheckAndEmitDeferredWriteBarrier().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SetSlotAddressForTaggedField()

void v8::internal::maglev::MaglevAssembler::SetSlotAddressForTaggedField ( Register  slot_reg,
Register  object,
int  offset 
)
inline

Definition at line 408 of file maglev-assembler-arm-inl.h.

410  {
411  add(slot_reg, object, Operand(offset - kHeapObjectTag));
412 }

References v8::internal::Assembler::add(), and v8::internal::kHeapObjectTag.

Referenced by CheckAndEmitDeferredWriteBarrier().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ShiftLeft()

void v8::internal::maglev::MaglevAssembler::ShiftLeft ( Register  reg,
int  amount 
)
inline

Definition at line 509 of file maglev-assembler-arm-inl.h.

509  {
510  lsl(reg, reg, Operand(amount));
511 }
void lsl(Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)

References v8::internal::Assembler::lsl().

+ Here is the call graph for this function:

◆ SignExtend32To64Bits()

void v8::internal::maglev::MaglevAssembler::SignExtend32To64Bits ( Register  dst,
Register  src 
)
inline

Definition at line 672 of file maglev-assembler-arm-inl.h.

672  {
673  // No 64-bit registers.
674 }

◆ SmiAddConstant() [1/2]

void v8::internal::maglev::MaglevAssembler::SmiAddConstant ( Register  dst,
Register  src,
int  value,
Label fail,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 236 of file maglev-assembler-arm-inl.h.

238  {
239  static_assert(!SmiValuesAre32Bits());
240  AssertSmi(src);
241  if (value != 0) {
242  add(dst, src, Operand(Smi::FromInt(value)), SetCC);
243  JumpIf(kOverflow, fail, distance);
244  } else {
245  Move(dst, src);
246  }
247 }

References v8::internal::Assembler::add(), v8::internal::MacroAssembler::AssertSmi(), v8::internal::Smi::FromInt(), JumpIf(), v8::internal::kOverflow, Move(), v8::internal::SetCC, v8::internal::SmiValuesAre32Bits(), and v8::internal::value.

Referenced by SmiAddConstant().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SmiAddConstant() [2/2]

void v8::internal::maglev::MaglevAssembler::SmiAddConstant ( Register  reg,
int  value,
Label fail,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 922 of file maglev-assembler-inl.h.

924  {
925  return SmiAddConstant(reg, reg, value, fail, distance);
926 }
void SmiAddConstant(Register dst, Register src, int value, Label *fail, Label::Distance distance=Label::kFar)

References SmiAddConstant(), and v8::internal::value.

+ Here is the call graph for this function:

◆ SmiSubConstant() [1/2]

void v8::internal::maglev::MaglevAssembler::SmiSubConstant ( Register  dst,
Register  src,
int  value,
Label fail,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 249 of file maglev-assembler-arm-inl.h.

251  {
252  static_assert(!SmiValuesAre32Bits());
253  AssertSmi(src);
254  if (value != 0) {
255  sub(dst, src, Operand(Smi::FromInt(value)), SetCC);
256  JumpIf(kOverflow, fail, distance);
257  } else {
258  Move(dst, src);
259  }
260 }

References v8::internal::MacroAssembler::AssertSmi(), v8::internal::Smi::FromInt(), JumpIf(), v8::internal::kOverflow, Move(), v8::internal::SetCC, v8::internal::SmiValuesAre32Bits(), v8::internal::Assembler::sub(), and v8::internal::value.

Referenced by SmiSubConstant().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SmiSubConstant() [2/2]

void v8::internal::maglev::MaglevAssembler::SmiSubConstant ( Register  reg,
int  value,
Label fail,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 928 of file maglev-assembler-inl.h.

930  {
931  return SmiSubConstant(reg, reg, value, fail, distance);
932 }
void SmiSubConstant(Register dst, Register src, int value, Label *fail, Label::Distance distance=Label::kFar)

References SmiSubConstant(), and v8::internal::value.

+ Here is the call graph for this function:

◆ SmiTagInt32AndJumpIfFail() [1/2]

void v8::internal::maglev::MaglevAssembler::SmiTagInt32AndJumpIfFail ( Register  dst,
Register  src,
Label fail,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 811 of file maglev-assembler-inl.h.

812  {
813  SmiTagInt32AndSetFlags(dst, src);
814  if (!SmiValuesAre32Bits()) {
815  JumpIf(kOverflow, fail, distance);
816  }
817 }
void SmiTagInt32AndSetFlags(Register dst, Register src)

References JumpIf(), v8::internal::kOverflow, SmiTagInt32AndSetFlags(), and v8::internal::SmiValuesAre32Bits().

Referenced by SmiTagInt32AndJumpIfFail().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SmiTagInt32AndJumpIfFail() [2/2]

void v8::internal::maglev::MaglevAssembler::SmiTagInt32AndJumpIfFail ( Register  reg,
Label fail,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 819 of file maglev-assembler-inl.h.

820  {
821  SmiTagInt32AndJumpIfFail(reg, reg, fail, distance);
822 }
void SmiTagInt32AndJumpIfFail(Register dst, Register src, Label *fail, Label::Distance distance=Label::kFar)

References SmiTagInt32AndJumpIfFail().

+ Here is the call graph for this function:

◆ SmiTagInt32AndJumpIfSuccess() [1/2]

void v8::internal::maglev::MaglevAssembler::SmiTagInt32AndJumpIfSuccess ( Register  dst,
Register  src,
Label success,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 824 of file maglev-assembler-inl.h.

825  {
826  SmiTagInt32AndSetFlags(dst, src);
827  if (!SmiValuesAre32Bits()) {
828  JumpIf(kNoOverflow, success, distance);
829  } else {
830  jmp(success);
831  }
832 }

References v8::internal::MacroAssembler::jmp(), JumpIf(), v8::internal::kNoOverflow, SmiTagInt32AndSetFlags(), and v8::internal::SmiValuesAre32Bits().

Referenced by MaterialiseValueNode(), and SmiTagInt32AndJumpIfSuccess().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SmiTagInt32AndJumpIfSuccess() [2/2]

void v8::internal::maglev::MaglevAssembler::SmiTagInt32AndJumpIfSuccess ( Register  reg,
Label success,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 834 of file maglev-assembler-inl.h.

835  {
836  SmiTagInt32AndJumpIfSuccess(reg, reg, success, distance);
837 }

References SmiTagInt32AndJumpIfSuccess().

+ Here is the call graph for this function:

◆ SmiTagInt32AndSetFlags()

void v8::internal::maglev::MaglevAssembler::SmiTagInt32AndSetFlags ( Register  dst,
Register  src 
)
inlineprivate

Definition at line 219 of file maglev-assembler-arm-inl.h.

220  {
221  add(dst, src, src, SetCC);
222 }

References v8::internal::Assembler::add(), and v8::internal::SetCC.

Referenced by SmiTagInt32AndJumpIfFail(), SmiTagInt32AndJumpIfSuccess(), SmiTagIntPtrAndJumpIfFail(), SmiTagUint32AndJumpIfFail(), UncheckedSmiTagInt32(), and UncheckedSmiTagUint32().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SmiTagIntPtrAndJumpIfFail()

void v8::internal::maglev::MaglevAssembler::SmiTagIntPtrAndJumpIfFail ( Register  dst,
Register  src,
Label fail,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 866 of file maglev-assembler-inl.h.

867  {
868  CheckIntPtrIsSmi(src, fail, distance);
869  // If the IntPtr is in the Smi range, we can treat it as Int32.
870  SmiTagInt32AndSetFlags(dst, src);
871  if (!SmiValuesAre32Bits()) {
872  Assert(kNoOverflow, AbortReason::kInputDoesNotFitSmi);
873  }
874 }
void CheckIntPtrIsSmi(Register obj, Label *fail, Label::Distance distance=Label::kFar)

References v8::internal::MacroAssembler::Assert(), CheckIntPtrIsSmi(), v8::internal::kNoOverflow, SmiTagInt32AndSetFlags(), and v8::internal::SmiValuesAre32Bits().

Referenced by SmiTagIntPtrAndJumpIfSuccess().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SmiTagIntPtrAndJumpIfSuccess()

void v8::internal::maglev::MaglevAssembler::SmiTagIntPtrAndJumpIfSuccess ( Register  dst,
Register  src,
Label success,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 876 of file maglev-assembler-inl.h.

877  {
878  Label done;
879  SmiTagIntPtrAndJumpIfFail(dst, src, &done);
880  Jump(success, distance);
881  bind(&done);
882 }
void SmiTagIntPtrAndJumpIfFail(Register dst, Register src, Label *fail, Label::Distance distance=Label::kFar)

References v8::internal::Assembler::bind(), Jump(), and SmiTagIntPtrAndJumpIfFail().

Referenced by MaterialiseValueNode().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SmiTagUint32AndJumpIfFail() [1/2]

void v8::internal::maglev::MaglevAssembler::SmiTagUint32AndJumpIfFail ( Register  dst,
Register  src,
Label fail,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 850 of file maglev-assembler-inl.h.

851  {
852  // Perform an unsigned comparison against Smi::kMaxValue.
854  distance);
855  SmiTagInt32AndSetFlags(dst, src);
856  if (!SmiValuesAre32Bits()) {
857  Assert(kNoOverflow, AbortReason::kInputDoesNotFitSmi);
858  }
859 }

References v8::internal::MacroAssembler::Assert(), CompareInt32AndJumpIf(), v8::internal::Smi::kMaxValue, v8::internal::kNoOverflow, v8::internal::kUnsignedGreaterThan, SmiTagInt32AndSetFlags(), and v8::internal::SmiValuesAre32Bits().

Referenced by SmiTagUint32AndJumpIfFail(), and SmiTagUint32AndJumpIfSuccess().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SmiTagUint32AndJumpIfFail() [2/2]

void v8::internal::maglev::MaglevAssembler::SmiTagUint32AndJumpIfFail ( Register  reg,
Label fail,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 861 of file maglev-assembler-inl.h.

862  {
863  SmiTagUint32AndJumpIfFail(reg, reg, fail, distance);
864 }
void SmiTagUint32AndJumpIfFail(Register dst, Register src, Label *fail, Label::Distance distance=Label::kFar)

References SmiTagUint32AndJumpIfFail().

+ Here is the call graph for this function:

◆ SmiTagUint32AndJumpIfSuccess() [1/2]

void v8::internal::maglev::MaglevAssembler::SmiTagUint32AndJumpIfSuccess ( Register  dst,
Register  src,
Label success,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 884 of file maglev-assembler-inl.h.

885  {
886  Label fail;
887  SmiTagUint32AndJumpIfFail(dst, src, &fail, Label::Distance::kNear);
888  Jump(success, distance);
889  bind(&fail);
890 }

References v8::internal::Assembler::bind(), Jump(), and SmiTagUint32AndJumpIfFail().

Referenced by MaterialiseValueNode(), and SmiTagUint32AndJumpIfSuccess().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SmiTagUint32AndJumpIfSuccess() [2/2]

void v8::internal::maglev::MaglevAssembler::SmiTagUint32AndJumpIfSuccess ( Register  reg,
Label success,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 892 of file maglev-assembler-inl.h.

893  {
894  SmiTagUint32AndJumpIfSuccess(reg, reg, success, distance);
895 }

References SmiTagUint32AndJumpIfSuccess().

+ Here is the call graph for this function:

◆ SmiToDouble()

void v8::internal::maglev::MaglevAssembler::SmiToDouble ( DoubleRegister  result,
Register  smi 
)
inline

Definition at line 283 of file maglev-assembler-inl.h.

283  {
284  AssertSmi(smi);
285  SmiUntag(smi);
286  Int32ToDouble(result, smi);
287 }
void SmiUntag(Register reg, SBit s=LeaveCC)

References v8::internal::MacroAssembler::AssertSmi(), Int32ToDouble(), v8::base::internal::result, and v8::internal::MacroAssembler::SmiUntag().

+ Here is the call graph for this function:

◆ StackSlotOperand()

MemOperand v8::internal::maglev::MaglevAssembler::StackSlotOperand ( StackSlot  slot)
inline

Definition at line 280 of file maglev-assembler-arm-inl.h.

280  {
281  return MemOperand(fp, slot.index);
282 }

References v8::internal::maglev::StackSlot::index.

Referenced by Move().

+ Here is the caller graph for this function:

◆ StoreContextCellFloat64Value()

void v8::internal::maglev::MaglevAssembler::StoreContextCellFloat64Value ( Register  cell,
DoubleRegister  value 
)
inline

Definition at line 1245 of file maglev-assembler-arm-inl.h.

1246  {
1247  vstr(value, FieldMemOperand(cell, offsetof(ContextCell, double_value_)));
1248 }

References v8::internal::FieldMemOperand(), v8::internal::value, and v8::internal::Assembler::vstr().

+ Here is the call graph for this function:

◆ StoreContextCellInt32Value()

void v8::internal::maglev::MaglevAssembler::StoreContextCellInt32Value ( Register  cell,
Register  value 
)
inline

Definition at line 1240 of file maglev-assembler-arm-inl.h.

1241  {
1242  str(value, FieldMemOperand(cell, offsetof(ContextCell, double_value_)));
1243 }

References v8::internal::FieldMemOperand(), v8::internal::Assembler::str(), and v8::internal::value.

+ Here is the call graph for this function:

◆ StoreContextCellSmiValue()

void v8::internal::maglev::MaglevAssembler::StoreContextCellSmiValue ( Register  cell,
Register  value 
)
inline

Definition at line 308 of file maglev-assembler-inl.h.

309  {
310  StoreTaggedFieldNoWriteBarrier(cell, offsetof(ContextCell, tagged_value_),
311  value);
312 }

References StoreTaggedFieldNoWriteBarrier(), and v8::internal::value.

+ Here is the call graph for this function:

◆ StoreField()

void v8::internal::maglev::MaglevAssembler::StoreField ( MemOperand  operand,
Register  value,
int  element_size 
)
inline

Definition at line 457 of file maglev-assembler-arm-inl.h.

458  {
459  DCHECK(size == 1 || size == 2 || size == 4);
460  if (size == 1) {
461  strb(value, operand);
462  } else if (size == 2) {
463  strh(value, operand);
464  } else {
465  DCHECK_EQ(size, 4);
466  str(value, operand);
467  }
468 }
void strb(Register src, const MemOperand &dst, Condition cond=al)
void strh(Register src, const MemOperand &dst, Condition cond=al)

References v8::internal::DCHECK(), DCHECK_EQ, size(), v8::internal::Assembler::str(), v8::internal::Assembler::strb(), v8::internal::Assembler::strh(), and v8::internal::value.

+ Here is the call graph for this function:

◆ StoreFixedArrayElementNoWriteBarrier()

void v8::internal::maglev::MaglevAssembler::StoreFixedArrayElementNoWriteBarrier ( Register  array,
Register  index,
Register  value 
)
inline

Definition at line 426 of file maglev-assembler-arm-inl.h.

427  {
428  TemporaryRegisterScope temps(this);
429  Register scratch = temps.AcquireScratch();
430  add(scratch, array, Operand(index, LSL, kTaggedSizeLog2));
433 }
void StoreTaggedField(const Register &value, const MemOperand &dst_field_operand)

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::Assembler::add(), v8::internal::FieldMemOperand(), v8::internal::index, v8::internal::kTaggedSizeLog2, v8::internal::LSL, OFFSET_OF_DATA_START, v8::internal::MacroAssembler::StoreTaggedField(), and v8::internal::value.

Referenced by StoreFixedArrayElementWithWriteBarrier().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ StoreFixedArrayElementWithWriteBarrier()

void v8::internal::maglev::MaglevAssembler::StoreFixedArrayElementWithWriteBarrier ( Register  array,
Register  index,
Register  value,
RegisterSnapshot  register_snapshot 
)

Definition at line 663 of file maglev-assembler.cc.

665  {
666  if (v8_flags.debug_code) {
667  AssertObjectType(array, FIXED_ARRAY_TYPE, AbortReason::kUnexpectedValue);
669  AbortReason::kUnexpectedNegativeValue);
670  }
672  CheckAndEmitDeferredWriteBarrier<kElement>(
673  array, index, value, register_snapshot, kValueIsDecompressed,
675 }
void StoreFixedArrayElementNoWriteBarrier(Register array, Register index, Register value)

References AssertObjectType(), CompareInt32AndAssert(), v8::internal::index, v8::internal::kGreaterThanEqual, kValueCanBeSmi, kValueIsDecompressed, StoreFixedArrayElementNoWriteBarrier(), v8::internal::v8_flags, and v8::internal::value.

+ Here is the call graph for this function:

◆ StoreFixedDoubleArrayElement()

void v8::internal::maglev::MaglevAssembler::StoreFixedDoubleArrayElement ( Register  array,
Register  index,
DoubleRegister  value 
)
inline

Definition at line 376 of file maglev-assembler-arm-inl.h.

377  {
378  TemporaryRegisterScope temps(this);
379  Register scratch = temps.AcquireScratch();
380  add(scratch, array, Operand(index, LSL, kDoubleSizeLog2));
382 }

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::Assembler::add(), v8::internal::FieldMemOperand(), v8::internal::index, v8::internal::kDoubleSizeLog2, v8::internal::LSL, OFFSET_OF_DATA_START, v8::internal::value, and v8::internal::Assembler::vstr().

+ Here is the call graph for this function:

◆ StoreFloat32()

void v8::internal::maglev::MaglevAssembler::StoreFloat32 ( MemOperand  dst,
DoubleRegister  src 
)
inline

Definition at line 606 of file maglev-assembler-arm-inl.h.

606  {
607  UseScratchRegisterScope temps(this);
608  SwVfpRegister temp_vfps = temps.AcquireS();
609  vcvt_f32_f64(temp_vfps, src);
610  vstr(temp_vfps, dst);
611 }
void vcvt_f32_f64(const SwVfpRegister dst, const DwVfpRegister src, VFPConversionMode mode=kDefaultRoundToZero, const Condition cond=al)

References v8::internal::UseScratchRegisterScope::AcquireS(), v8::internal::Assembler::vcvt_f32_f64(), and v8::internal::Assembler::vstr().

+ Here is the call graph for this function:

◆ StoreFloat64()

void v8::internal::maglev::MaglevAssembler::StoreFloat64 ( MemOperand  dst,
DoubleRegister  src 
)
inline

Definition at line 615 of file maglev-assembler-arm-inl.h.

615  {
616  vstr(src, dst);
617 }

References v8::internal::Assembler::vstr().

Referenced by AllocateHeapNumber(), and StoreHeapNumberValue().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ StoreHeapNumberValue()

void v8::internal::maglev::MaglevAssembler::StoreHeapNumberValue ( DoubleRegister  value,
Register  heap_number 
)
inline

Definition at line 459 of file maglev-assembler-inl.h.

460  {
461  StoreFloat64(FieldMemOperand(heap_number, offsetof(HeapNumber, value_)),
462  value);
463 }

References v8::internal::FieldMemOperand(), StoreFloat64(), and v8::internal::value.

+ Here is the call graph for this function:

◆ StoreInt32()

void v8::internal::maglev::MaglevAssembler::StoreInt32 ( MemOperand  dst,
Register  src 
)
inline

Definition at line 591 of file maglev-assembler-arm-inl.h.

591  {
592  str(src, dst);
593 }

References v8::internal::Assembler::str().

+ Here is the call graph for this function:

◆ StoreInt32Field()

void v8::internal::maglev::MaglevAssembler::StoreInt32Field ( Register  object,
int  offset,
int32_t  value 
)
inline

Definition at line 449 of file maglev-assembler-arm-inl.h.

450  {
451  TemporaryRegisterScope scope(this);
452  Register scratch = scope.AcquireScratch();
453  Move(scratch, value);
454  str(scratch, FieldMemOperand(object, offset));
455 }

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::FieldMemOperand(), Move(), v8::internal::Assembler::str(), and v8::internal::value.

Referenced by AllocateTwoByteString().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ StoreTaggedFieldNoWriteBarrier()

void v8::internal::maglev::MaglevAssembler::StoreTaggedFieldNoWriteBarrier ( Register  object,
int  offset,
Register  value 
)
inline

Definition at line 420 of file maglev-assembler-arm-inl.h.

422  {
424 }

References v8::internal::FieldMemOperand(), v8::internal::MacroAssembler::StoreTaggedField(), and v8::internal::value.

Referenced by SetMapAsRoot(), StoreContextCellSmiValue(), and StoreTaggedFieldWithWriteBarrier().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ StoreTaggedFieldWithWriteBarrier()

void v8::internal::maglev::MaglevAssembler::StoreTaggedFieldWithWriteBarrier ( Register  object,
int  offset,
Register  value,
RegisterSnapshot  register_snapshot,
ValueIsCompressed  value_is_compressed,
ValueCanBeSmi  value_can_be_smi 
)

Definition at line 639 of file maglev-assembler.cc.

642  {
643  AssertNotSmi(object);
644  StoreTaggedFieldNoWriteBarrier(object, offset, value);
645  CheckAndEmitDeferredWriteBarrier<kField>(
646  object, offset, value, register_snapshot, value_is_compressed,
647  value_can_be_smi);
648 }

References v8::internal::MacroAssembler::AssertNotSmi(), StoreTaggedFieldNoWriteBarrier(), and v8::internal::value.

+ Here is the call graph for this function:

◆ StoreTaggedSignedField() [1/2]

void v8::internal::maglev::MaglevAssembler::StoreTaggedSignedField ( Register  object,
int  offset,
Register  value 
)
inline

Definition at line 435 of file maglev-assembler-arm-inl.h.

436  {
437  AssertSmi(value);
439 }

References v8::internal::MacroAssembler::AssertSmi(), v8::internal::FieldMemOperand(), v8::internal::MacroAssembler::StoreTaggedField(), and v8::internal::value.

Referenced by AllocateTwoByteString().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ StoreTaggedSignedField() [2/2]

void v8::internal::maglev::MaglevAssembler::StoreTaggedSignedField ( Register  object,
int  offset,
Tagged< Smi value 
)
inline

Definition at line 441 of file maglev-assembler-arm-inl.h.

442  {
443  TemporaryRegisterScope scope(this);
444  Register scratch = scope.AcquireScratch();
445  Move(scratch, value);
446  MacroAssembler::StoreTaggedField(scratch, FieldMemOperand(object, offset));
447 }

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::FieldMemOperand(), Move(), v8::internal::MacroAssembler::StoreTaggedField(), and v8::internal::value.

+ Here is the call graph for this function:

◆ StoreUnalignedFloat64()

void v8::internal::maglev::MaglevAssembler::StoreUnalignedFloat64 ( Register  base,
Register  index,
DoubleRegister  src 
)
inline

Definition at line 644 of file maglev-assembler-arm-inl.h.

646  {
647  // vstr only works on 4 bytes aligned access.
648  TemporaryRegisterScope temps(this);
649  Register scratch = temps.AcquireScratch();
650  Register index_scratch = temps.AcquireScratch();
651  VmovLow(scratch, src);
652  str(scratch, MemOperand(base, index));
653  add(index_scratch, index, Operand(4));
654  VmovHigh(scratch, src);
655  str(scratch, MemOperand(base, index_scratch));
656 }

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::Assembler::add(), v8::internal::index, v8::internal::Assembler::str(), v8::internal::MacroAssembler::VmovHigh(), and v8::internal::MacroAssembler::VmovLow().

+ Here is the call graph for this function:

◆ StringCharCodeOrCodePointAt()

void v8::internal::maglev::MaglevAssembler::StringCharCodeOrCodePointAt ( BuiltinStringPrototypeCharCodeOrCodePointAt::Mode  mode,
RegisterSnapshot register_snapshot,
Register  result,
Register  string,
Register  index,
Register  scratch1,
Register  scratch2,
Label result_fits_one_byte 
)

Definition at line 279 of file maglev-assembler-arm.cc.

283  {
284  ASM_CODE_COMMENT(this);
285  ZoneLabelRef done(this);
286  Label seq_string;
287  Label cons_string;
288  Label sliced_string;
289 
290  Label* deferred_runtime_call = MakeDeferredCode(
291  [](MaglevAssembler* masm,
293  RegisterSnapshot register_snapshot, ZoneLabelRef done, Register result,
294  Register string, Register index) {
295  DCHECK(!register_snapshot.live_registers.has(result));
296  DCHECK(!register_snapshot.live_registers.has(string));
297  DCHECK(!register_snapshot.live_registers.has(index));
298  {
299  SaveRegisterStateForCall save_register_state(masm, register_snapshot);
300  __ SmiTag(index);
301  __ Push(string, index);
302  __ Move(kContextRegister, masm->native_context().object());
303  // This call does not throw nor can deopt.
304  if (mode ==
306  __ CallRuntime(Runtime::kStringCodePointAt);
307  } else {
308  DCHECK_EQ(mode,
310  __ CallRuntime(Runtime::kStringCharCodeAt);
311  }
312  save_register_state.DefineSafepoint();
315  }
316  __ b(*done);
317  },
318  mode, register_snapshot, done, result, string, index);
319 
320  // We might need to try more than one time for ConsString, SlicedString and
321  // ThinString.
322  Label loop;
323  bind(&loop);
324 
325  if (v8_flags.debug_code) {
326  // Check if {string} is a string.
327  AssertObjectTypeInRange(string, FIRST_STRING_TYPE, LAST_STRING_TYPE,
328  AbortReason::kUnexpectedValue);
329 
330  Register scratch = instance_type;
331  ldr(scratch, FieldMemOperand(string, offsetof(String, length_)));
332  cmp(index, scratch);
333  Check(lo, AbortReason::kUnexpectedValue);
334  }
335 
336  // Get instance type.
337  LoadInstanceType(instance_type, string);
338 
339  {
340  TemporaryRegisterScope temps(this);
341  Register representation = temps.AcquireScratch();
342 
343  // TODO(victorgomes): Add fast path for external strings.
344  and_(representation, instance_type, Operand(kStringRepresentationMask));
345  cmp(representation, Operand(kSeqStringTag));
346  b(eq, &seq_string);
347  cmp(representation, Operand(kConsStringTag));
348  b(eq, &cons_string);
349  cmp(representation, Operand(kSlicedStringTag));
350  b(eq, &sliced_string);
351  cmp(representation, Operand(kThinStringTag));
352  b(ne, deferred_runtime_call);
353  // Fallthrough to thin string.
354  }
355 
356  // Is a thin string.
357  {
358  ldr(string, FieldMemOperand(string, offsetof(ThinString, actual_)));
359  b(&loop);
360  }
361 
362  bind(&sliced_string);
363  {
364  TemporaryRegisterScope temps(this);
365  Register offset = temps.AcquireScratch();
366 
367  LoadAndUntagTaggedSignedField(offset, string,
368  offsetof(SlicedString, offset_));
369  LoadTaggedField(string, string, offsetof(SlicedString, parent_));
370  add(index, index, offset);
371  b(&loop);
372  }
373 
374  bind(&cons_string);
375  {
376  // Reuse {instance_type} register here, since CompareRoot requires a scratch
377  // register as well.
378  Register second_string = instance_type;
379  ldr(second_string, FieldMemOperand(string, offsetof(ConsString, second_)));
380  CompareRoot(second_string, RootIndex::kempty_string);
381  b(ne, deferred_runtime_call);
382  ldr(string, FieldMemOperand(string, offsetof(ConsString, first_)));
383  b(&loop); // Try again with first string.
384  }
385 
386  bind(&seq_string);
387  {
388  Label two_byte_string;
389  tst(instance_type, Operand(kOneByteStringTag));
390  b(eq, &two_byte_string);
391  // The result of one-byte string will be the same for both modes
392  // (CharCodeAt/CodePointAt), since it cannot be the first half of a
393  // surrogate pair.
395  b(result_fits_one_byte);
396 
397  bind(&two_byte_string);
398  // {instance_type} is unused from this point, so we can use as scratch.
399  Register scratch = instance_type;
400  lsl(scratch, index, Operand(1));
401  add(scratch, scratch,
402  Operand(OFFSET_OF_DATA_START(SeqTwoByteString) - kHeapObjectTag));
403 
405  ldrh(result, MemOperand(string, scratch));
406  } else {
407  DCHECK_EQ(mode,
409  Register string_backup = string;
410  if (result == string) {
411  string_backup = scratch2;
412  Move(string_backup, string);
413  }
414  ldrh(result, MemOperand(string, scratch));
415 
416  Register first_code_point = scratch;
417  and_(first_code_point, result, Operand(0xfc00));
418  cmp(first_code_point, Operand(0xd800));
419  b(ne, *done);
420 
421  Register length = scratch;
422  ldr(length, FieldMemOperand(string_backup, offsetof(String, length_)));
423  add(index, index, Operand(1));
424  cmp(index, length);
425  b(ge, *done);
426 
427  Register second_code_point = scratch;
428  lsl(index, index, Operand(1));
429  add(index, index,
430  Operand(OFFSET_OF_DATA_START(SeqTwoByteString) - kHeapObjectTag));
431  ldrh(second_code_point, MemOperand(string_backup, index));
432 
433  // {index} is not needed at this point.
434  Register scratch2 = index;
435  and_(scratch2, second_code_point, Operand(0xfc00));
436  cmp(scratch2, Operand(0xdc00));
437  b(ne, *done);
438 
439  int surrogate_offset = 0x10000 - (0xd800 << 10) - 0xdc00;
440  add(second_code_point, second_code_point, Operand(surrogate_offset));
441  lsl(result, result, Operand(10));
442  add(result, result, second_code_point);
443  }
444 
445  // Fallthrough.
446  }
447 
448  bind(*done);
449 
450  if (v8_flags.debug_code) {
451  // We make sure that the user of this macro is not relying in string and
452  // index to not be clobbered.
453  if (result != string) {
454  Move(string, 0xdeadbeef);
455  }
456  if (result != index) {
457  Move(index, 0xdeadbeef);
458  }
459  }
460 }
void SmiTag(Register reg, SBit s=LeaveCC)
void LoadAndUntagTaggedSignedField(Register result, Register object, int offset)
void AssertObjectTypeInRange(Register heap_object, InstanceType lower_limit, InstanceType higher_limit, AbortReason reason)
void SeqOneByteStringCharCodeAt(Register result, Register string, Register index)
void CallRuntime(Runtime::FunctionId fid)
too high values may cause the compiler to set high thresholds for inlining to as much as possible avoid inlined allocation of objects that cannot escape trace load stores from virtual maglev objects use TurboFan fast string builder analyze liveness of environment slots and zap dead values trace TurboFan load elimination emit data about basic block usage in builtins to this enable builtin reordering when run mksnapshot flag for emit warnings when applying builtin profile data verify register allocation in TurboFan randomly schedule instructions to stress dependency tracking enable store store elimination in TurboFan rewrite far to near simulate GC compiler thread race related to allow float parameters to be passed in simulator mode JS Wasm Run additional turbo_optimize_inlined_js_wasm_wrappers enables Turboshaft s StaticAssert and CheckTurboshaftTypeOf operations Wasm code into JS functions via the JS to Wasm wrappers are still inlined in TurboFan For controlling whether to at see turbo inline js wasm calls enable Turboshaft s loop unrolling enable an additional Turboshaft phase that performs optimizations based on type information enable Turbolev features that we want to ship in the not too far future trace individual Turboshaft reduction steps trace intermediate Turboshaft reduction steps trace Turboshaft s if else to switch reducer invocation count threshold for early optimization Enables optimizations which favor memory size over execution speed Enables sampling allocation profiler with X as a sample interval min size of a semi the new space consists of two semi spaces max size of the preconfigured old space Collect garbage after Collect garbage after keeps maps alive for< n > old space garbage collections print one detailed trace line in allocation gc speed threshold for starting incremental marking via a task in percent of available threshold for starting incremental marking immediately in percent of available Use a single schedule for determining a marking schedule between JS and C objects schedules the minor GC task with kUserVisible priority max worker number of concurrent for NumberOfWorkerThreads start background threads that allocate memory concurrent_array_buffer_sweeping use parallel threads to clear weak refs in the atomic pause trace progress of the incremental marking trace object counts and memory usage report a tick only when allocated zone memory changes by this amount TracingFlags::gc_stats TracingFlags::gc_stats track native contexts that are expected to be garbage collected verify heap pointers before and after GC memory reducer runs GC with ReduceMemoryFootprint flag Maximum number of memory reducer GCs scheduled Old gen GC speed is computed directly from gc tracer counters Perform compaction on full GCs based on V8 s default heuristics Perform compaction on every full GC Perform code space compaction when finalizing a full GC with stack Stress GC compaction to flush out bugs with moving objects flush of baseline code when it has not been executed recently Use time base code flushing instead of age Use a progress bar to scan large objects in increments when incremental marking is active force incremental marking for small heaps and run it more often Release pooled large pages after X seconds prints number of allocations and enables analysis mode for gc fuzz e g stress stress scavenge force scavenge at random points between and reclaim otherwise unreachable unmodified wrapper objects when possible discard the memory pool before invoking the GC on memory pressure or last resort GCs Delay before memory reducer start virtual randomize memory reservations by ignoring any hints passed when allocating pages use incremental marking for CppHeap cppheap_concurrent_marking c value for membalancer A special constant to balance between memory and space tradeoff The smaller the more memory it uses enable use of SSE4 instructions if available enable use of SAHF instruction if enable use of AVX VNNI instructions if available enable use of POPCNT instruction if available force all emitted branches to be in long mode(MIPS/PPC only)") DEFINE_BOOL(partial_constant_pool
const uint32_t kOneByteStringTag
Definition: instance-type.h:58
const uint32_t kStringRepresentationMask
Definition: instance-type.h:30
template const char * string

References __, v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::Assembler::add(), v8::internal::Assembler::and_(), ASM_CODE_COMMENT, AssertObjectTypeInRange(), v8::internal::Assembler::b(), v8::internal::Assembler::bind(), CallRuntime(), v8::internal::MacroAssembler::Check(), v8::internal::Assembler::cmp(), v8::internal::MacroAssembler::CompareRoot(), v8::internal::DCHECK(), DCHECK_EQ, v8::internal::maglev::SaveRegisterStateForCall::DefineSafepoint(), v8::internal::eq, v8::internal::FieldMemOperand(), v8::internal::ge, v8::internal::RegListBase< RegisterT >::has(), v8::internal::index, v8::internal::maglev::BuiltinStringPrototypeCharCodeOrCodePointAt::kCharCodeAt, v8::internal::maglev::BuiltinStringPrototypeCharCodeOrCodePointAt::kCodePointAt, v8::internal::kConsStringTag, v8::internal::kContextRegister, v8::internal::kHeapObjectTag, v8::internal::kOneByteStringTag, v8::internal::kReturnRegister0, v8::internal::kSeqStringTag, v8::internal::kSlicedStringTag, v8::internal::kStringRepresentationMask, v8::internal::kThinStringTag, v8::internal::LAST_STRING_TYPE, v8::internal::Assembler::ldr(), v8::internal::Assembler::ldrh(), v8::internal::length, v8::internal::maglev::RegisterSnapshot::live_registers, v8::internal::lo, LoadAndUntagTaggedSignedField(), LoadInstanceType(), LoadTaggedField(), v8::internal::Assembler::lsl(), MakeDeferredCode(), mode(), Move(), native_context(), v8::internal::ne, v8::internal::compiler::NativeContextRef::object(), OFFSET_OF_DATA_START, Push(), v8::base::internal::result, SeqOneByteStringCharCodeAt(), v8::internal::MacroAssembler::SmiTag(), v8::internal::MacroAssembler::SmiUntag(), v8::internal::string, v8::internal::Assembler::tst(), and v8::internal::v8_flags.

+ Here is the call graph for this function:

◆ StringFromCharCode()

void v8::internal::maglev::MaglevAssembler::StringFromCharCode ( RegisterSnapshot  register_snapshot,
Label char_code_fits_one_byte,
Register  result,
Register  char_code,
Register  scratch,
CharCodeMaskMode  mask_mode 
)

Definition at line 237 of file maglev-assembler-arm.cc.

241  {
242  AssertZeroExtended(char_code);
243  DCHECK_NE(char_code, scratch);
244  ZoneLabelRef done(this);
245  if (mask_mode == CharCodeMaskMode::kMustApplyMask) {
246  and_(char_code, char_code, Operand(0xFFFF));
247  }
248  cmp(char_code, Operand(String::kMaxOneByteCharCode));
251  [](MaglevAssembler* masm, RegisterSnapshot register_snapshot,
252  ZoneLabelRef done, Register result, Register char_code,
253  Register scratch) {
254  // Be sure to save {char_code}. If it aliases with {result}, use
255  // the scratch register.
256  // TODO(victorgomes): This is probably not needed any more, because
257  // we now ensure that results registers don't alias with inputs/temps.
258  // Confirm, and drop this check.
259  if (char_code == result) {
260  __ Move(scratch, char_code);
261  char_code = scratch;
262  }
263  DCHECK_NE(char_code, result);
264  DCHECK(!register_snapshot.live_tagged_registers.has(char_code));
265  register_snapshot.live_registers.set(char_code);
266  __ AllocateTwoByteString(register_snapshot, result, 1);
267  __ strh(char_code, FieldMemOperand(
268  result, OFFSET_OF_DATA_START(SeqTwoByteString)));
269  __ b(*done);
270  },
271  register_snapshot, done, result, char_code, scratch);
272  if (char_code_fits_one_byte != nullptr) {
273  bind(char_code_fits_one_byte);
274  }
275  LoadSingleCharacterString(result, char_code, scratch);
276  bind(*done);
277 }
void AssertZeroExtended(Register int32_register)
void LoadSingleCharacterString(Register result, int char_code)
void AllocateTwoByteString(RegisterSnapshot register_snapshot, Register result, int length)

References __, AllocateTwoByteString(), v8::internal::Assembler::and_(), v8::internal::MacroAssembler::AssertZeroExtended(), v8::internal::Assembler::b(), v8::internal::Assembler::bind(), v8::internal::Assembler::cmp(), v8::internal::DCHECK(), DCHECK_NE, v8::internal::FieldMemOperand(), v8::internal::RegListBase< RegisterT >::has(), JumpToDeferredIf(), v8::internal::String::kMaxOneByteCharCode, kMustApplyMask, v8::internal::kUnsignedGreaterThan, v8::internal::maglev::RegisterSnapshot::live_registers, v8::internal::maglev::RegisterSnapshot::live_tagged_registers, LoadSingleCharacterString(), Move(), OFFSET_OF_DATA_START, v8::base::internal::result, v8::internal::RegListBase< RegisterT >::set(), and v8::internal::Assembler::strh().

+ Here is the call graph for this function:

◆ StringLength()

void v8::internal::maglev::MaglevAssembler::StringLength ( Register  result,
Register  string 
)
inline

Definition at line 1048 of file maglev-assembler-inl.h.

1048  {
1049  if (v8_flags.debug_code) {
1050  // Check if {string} is a string.
1051  AssertObjectTypeInRange(string, FIRST_STRING_TYPE, LAST_STRING_TYPE,
1052  AbortReason::kUnexpectedValue);
1053  }
1054  LoadSignedField(result, FieldMemOperand(string, offsetof(String, length_)),
1055  sizeof(int32_t));
1056 }
void LoadSignedField(Register result, MemOperand operand, int element_size)

References AssertObjectTypeInRange(), v8::internal::FieldMemOperand(), v8::internal::LAST_STRING_TYPE, LoadSignedField(), v8::base::internal::result, and v8::internal::v8_flags.

+ Here is the call graph for this function:

◆ TestInt32AndJumpIfAllClear() [1/2]

void v8::internal::maglev::MaglevAssembler::TestInt32AndJumpIfAllClear ( MemOperand  operand,
int32_t  mask,
Label target,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 1207 of file maglev-assembler-arm-inl.h.

1208  {
1209  TemporaryRegisterScope temps(this);
1210  Register value = temps.AcquireScratch();
1211  ldr(value, operand);
1212  TestInt32AndJumpIfAllClear(value, mask, target);
1213 }

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::Assembler::ldr(), TestInt32AndJumpIfAllClear(), and v8::internal::value.

+ Here is the call graph for this function:

◆ TestInt32AndJumpIfAllClear() [2/2]

void v8::internal::maglev::MaglevAssembler::TestInt32AndJumpIfAllClear ( Register  r1,
int32_t  mask,
Label target,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 1201 of file maglev-assembler-arm-inl.h.

1202  {
1203  tst(r1, Operand(mask));
1204  b(eq, target);
1205 }

References v8::internal::Assembler::b(), v8::internal::eq, and v8::internal::Assembler::tst().

Referenced by JumpIfSeqOneByteStringMap(), TestInt32AndJumpIfAllClear(), TestUint8AndJumpIfAllClear(), and ToBoolean().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ TestInt32AndJumpIfAnySet() [1/2]

void v8::internal::maglev::MaglevAssembler::TestInt32AndJumpIfAnySet ( MemOperand  operand,
int32_t  mask,
Label target,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 1185 of file maglev-assembler-arm-inl.h.

1186  {
1187  TemporaryRegisterScope temps(this);
1188  Register value = temps.AcquireScratch();
1189  ldr(value, operand);
1190  TestInt32AndJumpIfAnySet(value, mask, target);
1191 }

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::Assembler::ldr(), TestInt32AndJumpIfAnySet(), and v8::internal::value.

+ Here is the call graph for this function:

◆ TestInt32AndJumpIfAnySet() [2/2]

void v8::internal::maglev::MaglevAssembler::TestInt32AndJumpIfAnySet ( Register  r1,
int32_t  mask,
Label target,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 1179 of file maglev-assembler-arm-inl.h.

1180  {
1181  tst(r1, Operand(mask));
1182  b(ne, target);
1183 }

References v8::internal::Assembler::b(), v8::internal::ne, and v8::internal::Assembler::tst().

Referenced by JumpIfSeqOneByteStringMap(), LoadThinStringValue(), TestInt32AndJumpIfAnySet(), and TestUint8AndJumpIfAnySet().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ TestTypeOf()

void v8::internal::maglev::MaglevAssembler::TestTypeOf ( Register  object,
interpreter::TestTypeOfFlags::LiteralFlag  literal,
Label if_true,
Label::Distance  true_distance,
bool  fallthrough_when_true,
Label if_false,
Label::Distance  false_distance,
bool  fallthrough_when_false 
)

Definition at line 384 of file maglev-assembler.cc.

388  {
389  // If both true and false are fallthroughs, we don't have to do anything.
390  if (fallthrough_when_true && fallthrough_when_false) return;
391 
392  // IMPORTANT: Note that `object` could be a register that aliases registers in
393  // the TemporaryRegisterScope. Make sure that all reads of `object` are before
394  // any writes to scratch registers
395  using LiteralFlag = interpreter::TestTypeOfFlags::LiteralFlag;
396  switch (literal) {
397  case LiteralFlag::kNumber: {
398  MaglevAssembler::TemporaryRegisterScope temps(this);
399  Register scratch = temps.AcquireScratch();
400  JumpIfSmi(object, is_true, true_distance);
401  CompareMapWithRoot(object, RootIndex::kHeapNumberMap, scratch);
402  Branch(kEqual, is_true, true_distance, fallthrough_when_true, is_false,
403  false_distance, fallthrough_when_false);
404  return;
405  }
406  case LiteralFlag::kString: {
407  JumpIfSmi(object, is_false, false_distance);
408  CheckJSAnyIsStringAndBranch(object, is_true, true_distance,
409  fallthrough_when_true, is_false,
410  false_distance, fallthrough_when_false);
411  return;
412  }
413  case LiteralFlag::kSymbol: {
414  JumpIfSmi(object, is_false, false_distance);
415  BranchOnObjectType(object, SYMBOL_TYPE, is_true, true_distance,
416  fallthrough_when_true, is_false, false_distance,
417  fallthrough_when_false);
418  return;
419  }
420  case LiteralFlag::kBoolean:
421  JumpIfRoot(object, RootIndex::kTrueValue, is_true, true_distance);
422  CompareRoot(object, RootIndex::kFalseValue);
423  Branch(kEqual, is_true, true_distance, fallthrough_when_true, is_false,
424  false_distance, fallthrough_when_false);
425  return;
426  case LiteralFlag::kBigInt: {
427  JumpIfSmi(object, is_false, false_distance);
428  BranchOnObjectType(object, BIGINT_TYPE, is_true, true_distance,
429  fallthrough_when_true, is_false, false_distance,
430  fallthrough_when_false);
431  return;
432  }
433  case LiteralFlag::kUndefined: {
434  MaglevAssembler::TemporaryRegisterScope temps(this);
435  Register map = temps.AcquireScratch();
436  // Make sure `object` isn't a valid temp here, since we reuse it.
437  DCHECK(!temps.Available().has(object));
438  JumpIfSmi(object, is_false, false_distance);
439  // Check it has the undetectable bit set and it is not null.
440  LoadMap(map, object);
441  TestUint8AndJumpIfAllClear(FieldMemOperand(map, Map::kBitFieldOffset),
442  Map::Bits1::IsUndetectableBit::kMask, is_false,
443  false_distance);
444  CompareRoot(object, RootIndex::kNullValue);
445  Branch(kNotEqual, is_true, true_distance, fallthrough_when_true, is_false,
446  false_distance, fallthrough_when_false);
447  return;
448  }
449  case LiteralFlag::kFunction: {
450  MaglevAssembler::TemporaryRegisterScope temps(this);
451  Register scratch = temps.AcquireScratch();
452  JumpIfSmi(object, is_false, false_distance);
453  // Check if callable bit is set and not undetectable.
454  LoadMap(scratch, object);
455  Branch(IsCallableAndNotUndetectable(scratch, scratch), is_true,
456  true_distance, fallthrough_when_true, is_false, false_distance,
457  fallthrough_when_false);
458  return;
459  }
460  case LiteralFlag::kObject: {
461  MaglevAssembler::TemporaryRegisterScope temps(this);
462  Register scratch = temps.AcquireScratch();
463  JumpIfSmi(object, is_false, false_distance);
464  // If the object is null then return true.
465  JumpIfRoot(object, RootIndex::kNullValue, is_true, true_distance);
466  // Check if the object is a receiver type,
467  LoadMap(scratch, object);
468  CompareInstanceTypeAndJumpIf(scratch, FIRST_JS_RECEIVER_TYPE, kLessThan,
469  is_false, false_distance);
470  // ... and is not undefined (undetectable) nor callable.
471  Branch(IsNotCallableNorUndetactable(scratch, scratch), is_true,
472  true_distance, fallthrough_when_true, is_false, false_distance,
473  fallthrough_when_false);
474  return;
475  }
476  case LiteralFlag::kOther:
477  if (!fallthrough_when_false) {
478  Jump(is_false, false_distance);
479  }
480  return;
481  }
482  UNREACHABLE();
483 }
Condition IsNotCallableNorUndetactable(Register map, Register scratch)
void JumpIfRoot(Register with, RootIndex index, Label *if_equal, Label::Distance distance=Label::kFar)
Condition IsCallableAndNotUndetectable(Register map, Register scratch)
void BranchOnObjectType(Register heap_object, InstanceType type, Label *if_true, Label::Distance true_distance, bool fallthrough_when_true, Label *if_false, Label::Distance false_distance, bool fallthrough_when_false)
void CheckJSAnyIsStringAndBranch(Register heap_object, Label *if_true, Label::Distance true_distance, bool fallthrough_when_true, Label *if_false, Label::Distance false_distance, bool fallthrough_when_false)

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::maglev::MaglevAssembler::TemporaryRegisterScopeBase< Derived >::Available(), v8::internal::BIGINT_TYPE, Branch(), BranchOnObjectType(), CheckJSAnyIsStringAndBranch(), CompareInstanceTypeAndJumpIf(), CompareMapWithRoot(), v8::internal::MacroAssembler::CompareRoot(), v8::internal::DCHECK(), v8::internal::FieldMemOperand(), v8::internal::RegListBase< RegisterT >::has(), IsCallableAndNotUndetectable(), IsNotCallableNorUndetactable(), Jump(), JumpIfRoot(), JumpIfSmi(), v8::internal::kEqual, v8::internal::torque::ls::kFunction, v8::internal::kLessThan, v8::internal::kNotEqual, v8::internal::MacroAssembler::LoadMap(), TestUint8AndJumpIfAllClear(), and v8::internal::UNREACHABLE().

+ Here is the call graph for this function:

◆ TestUint8AndJumpIfAllClear()

void v8::internal::maglev::MaglevAssembler::TestUint8AndJumpIfAllClear ( MemOperand  operand,
uint8_t  mask,
Label target,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 1215 of file maglev-assembler-arm-inl.h.

1216  {
1217  TemporaryRegisterScope temps(this);
1218  Register value = temps.AcquireScratch();
1219  LoadByte(value, operand);
1220  TestInt32AndJumpIfAllClear(value, mask, target);
1221 }

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), LoadByte(), TestInt32AndJumpIfAllClear(), and v8::internal::value.

Referenced by JumpIfNotCallable(), JumpIfNotUndetectable(), and TestTypeOf().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ TestUint8AndJumpIfAnySet()

void v8::internal::maglev::MaglevAssembler::TestUint8AndJumpIfAnySet ( MemOperand  operand,
uint8_t  mask,
Label target,
Label::Distance  distance = Label::kFar 
)
inline

Definition at line 1193 of file maglev-assembler-arm-inl.h.

1194  {
1195  TemporaryRegisterScope temps(this);
1196  Register value = temps.AcquireScratch();
1197  ldrb(value, operand);
1198  TestInt32AndJumpIfAnySet(value, mask, target);
1199 }

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::Assembler::ldrb(), TestInt32AndJumpIfAnySet(), and v8::internal::value.

Referenced by JumpIfUndetectable(), and ToBoolean().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ToBoolean()

void v8::internal::maglev::MaglevAssembler::ToBoolean ( Register  value,
CheckType  check_type,
ZoneLabelRef  is_true,
ZoneLabelRef  is_false,
bool  fallthrough_when_true 
)

Definition at line 160 of file maglev-assembler.cc.

162  {
163  TemporaryRegisterScope temps(this);
164 
165  if (check_type == CheckType::kCheckHeapObject) {
166  // Check if {{value}} is Smi.
167  Condition is_smi = CheckSmi(value);
169  is_smi,
170  [](MaglevAssembler* masm, Register value, ZoneLabelRef is_true,
171  ZoneLabelRef is_false) {
172  // Check if {value} is not zero.
173  __ CompareSmiAndJumpIf(value, Smi::FromInt(0), kEqual, *is_false);
174  __ Jump(*is_true);
175  },
176  value, is_true, is_false);
177  } else if (v8_flags.debug_code) {
179  }
180 
181 #if V8_STATIC_ROOTS_BOOL
182  // Check if {{value}} is a falsey root or the true value.
183  // Undefined is the first root, so it's the smallest possible pointer
184  // value, which means we don't have to subtract it for the range check.
185  ReadOnlyRoots roots(isolate_);
186  static_assert(StaticReadOnlyRoot::kFirstAllocatedRoot ==
187  StaticReadOnlyRoot::kUndefinedValue);
188  static_assert(StaticReadOnlyRoot::kUndefinedValue + sizeof(Undefined) ==
189  StaticReadOnlyRoot::kNullValue);
190  static_assert(StaticReadOnlyRoot::kNullValue + sizeof(Null) ==
191  StaticReadOnlyRoot::kempty_string);
192  static_assert(StaticReadOnlyRoot::kempty_string +
194  StaticReadOnlyRoot::kFalseValue);
195  static_assert(StaticReadOnlyRoot::kFalseValue + sizeof(False) ==
196  StaticReadOnlyRoot::kTrueValue);
197  CompareInt32AndJumpIf(value, StaticReadOnlyRoot::kTrueValue,
198  kUnsignedLessThan, *is_false);
199  // Reuse the condition flags from the above int32 compare to also check for
200  // the true value itself.
201  JumpIf(kEqual, *is_true);
202 #else
203  // Check if {{value}} is false.
204  JumpIfRoot(value, RootIndex::kFalseValue, *is_false);
205 
206  // Check if {{value}} is true.
207  JumpIfRoot(value, RootIndex::kTrueValue, *is_true);
208 
209  // Check if {{value}} is empty string.
210  JumpIfRoot(value, RootIndex::kempty_string, *is_false);
211 
212  // Only check null and undefined if we're not going to check the
213  // undetectable bit.
214  if (compilation_info()
215  ->broker()
216  ->dependencies()
217  ->DependOnNoUndetectableObjectsProtector()) {
218  // Check if {{value}} is undefined.
219  JumpIfRoot(value, RootIndex::kUndefinedValue, *is_false);
220 
221  // Check if {{value}} is null.
222  JumpIfRoot(value, RootIndex::kNullValue, *is_false);
223  }
224 #endif
225  Register map = temps.AcquireScratch();
226  LoadMap(map, value);
227 
228  if (!compilation_info()
229  ->broker()
230  ->dependencies()
231  ->DependOnNoUndetectableObjectsProtector()) {
232  // Check if {{value}} is undetectable.
233  TestUint8AndJumpIfAnySet(FieldMemOperand(map, Map::kBitFieldOffset),
234  Map::Bits1::IsUndetectableBit::kMask, *is_false);
235  }
236 
237  // Check if {{value}} is a HeapNumber.
238  JumpIfRoot(map, RootIndex::kHeapNumberMap,
240  [](MaglevAssembler* masm, Register value, ZoneLabelRef is_true,
241  ZoneLabelRef is_false) {
243  FieldMemOperand(value, offsetof(HeapNumber, value_)),
244  *is_false);
245  __ Jump(*is_true);
246  },
247  value, is_true, is_false));
248 
249  // Check if {{value}} is a BigInt.
250  // {{map}} is not needed after this check, we pass to the deferred code, so it
251  // can be added to the temporary registers.
252  JumpIfRoot(map, RootIndex::kBigIntMap,
254  [](MaglevAssembler* masm, Register value, Register map,
255  ZoneLabelRef is_true, ZoneLabelRef is_false) {
256  TemporaryRegisterScope temps(masm);
257  temps.IncludeScratch(map);
259  FieldMemOperand(value, offsetof(BigInt, bitfield_)),
260  BigInt::LengthBits::kMask, *is_false);
261  __ Jump(*is_true);
262  },
263  value, map, is_true, is_false));
264  // Otherwise true.
265  if (!fallthrough_when_true) {
266  Jump(*is_true);
267  }
268 }
static constexpr U kMask
Definition: bit-field.h:41
Condition CheckSmi(Register src)
static constexpr int32_t SizeFor(int32_t length)
Definition: string-inl.h:1359
void CompareSmiAndJumpIf(Register r1, Tagged< Smi > value, Condition cond, Label *target, Label::Distance distance=Label::kFar)
other heap size generate builtins concurrently on separate threads in mksnapshot track concurrent recompilation artificial compilation delay in ms max number of threads that concurrent Turbofan can create additional concurrent optimization jobs but throw away result whether maglev resets the interrupt budget whether maglev resets the OSR interrupt budget create additional concurrent optimization jobs maximum levels for nesting child serializers trace the heap broker(reports on missing data only)") DEFINE_INT(deopt_every_n_times
Local< Primitive > Null(Isolate *isolate)
Local< Primitive > Undefined(Isolate *isolate)
Local< Boolean > False(Isolate *isolate)

References __, v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), v8::internal::MacroAssembler::AssertNotSmi(), broker(), v8::internal::MacroAssembler::CheckSmi(), CompareDoubleAndJumpIfZeroOrNaN(), CompareInt32AndJumpIf(), CompareSmiAndJumpIf(), compilation_info(), v8::internal::FieldMemOperand(), v8::internal::Smi::FromInt(), v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::IncludeScratch(), v8::internal::MacroAssemblerBase::isolate_, Jump(), JumpIf(), JumpIfRoot(), JumpToDeferredIf(), v8::internal::maglev::kCheckHeapObject, v8::internal::kEqual, v8::base::BitField< T, shift, size, U >::kMask, v8::internal::kUnsignedLessThan, v8::internal::MacroAssembler::LoadMap(), MakeDeferredCode(), v8::internal::SeqOneByteString::SizeFor(), TestInt32AndJumpIfAllClear(), TestUint8AndJumpIfAnySet(), v8::internal::v8_flags, and v8::internal::value.

+ Here is the call graph for this function:

◆ ToMemOperand() [1/2]

MemOperand v8::internal::maglev::MaglevAssembler::ToMemOperand ( const compiler::InstructionOperand operand)
inline

Definition at line 292 of file maglev-assembler-arm-inl.h.

293  {
295 }
MemOperand GetStackSlot(const compiler::AllocatedOperand &operand)

References v8::internal::compiler::LocationOperand::cast(), and GetStackSlot().

Referenced by FromAnyToRegister(), IsRootConstant(), MaterialiseValueNode(), ToMemOperand(), and v8::internal::maglev::detail::ToRegister().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ToMemOperand() [2/2]

MemOperand v8::internal::maglev::MaglevAssembler::ToMemOperand ( const ValueLocation location)
inline

Definition at line 297 of file maglev-assembler-arm-inl.h.

297  {
298  return ToMemOperand(location.operand());
299 }

References v8::internal::maglev::ValueLocation::operand(), and ToMemOperand().

+ Here is the call graph for this function:

◆ ToUint8Clamped()

void v8::internal::maglev::MaglevAssembler::ToUint8Clamped ( Register  result,
DoubleRegister  value,
Label min,
Label max,
Label done 
)
inline

Definition at line 679 of file maglev-assembler-arm-inl.h.

681  {
682  CpuFeatureScope scope(this, ARMv8);
683  TemporaryRegisterScope temps(this);
684  DoubleRegister scratch = temps.AcquireScratchDouble();
685  Move(scratch, 0.0);
686  VFPCompareAndSetFlags(scratch, value);
687  // Set to 0 if NaN.
688  JumpIf(kOverflow, min);
690  Move(scratch, 255.0);
691  VFPCompareAndSetFlags(value, scratch);
693  // if value in [0, 255], then round up to the nearest.
694  vrintn(scratch, value);
695  TruncateDoubleToInt32(result, scratch);
696  Jump(done);
697 }
void vrintn(const SwVfpRegister dst, const SwVfpRegister src)
void max(SecondaryField fmt, FPURegister fd, FPURegister fs, FPURegister ft)
void min(SecondaryField fmt, FPURegister fd, FPURegister fs, FPURegister ft)
void TruncateDoubleToInt32(Register dst, DoubleRegister src)

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratchDouble(), Jump(), JumpIf(), v8::internal::kGreaterThanEqual, v8::internal::kOverflow, v8::internal::Assembler::max(), v8::internal::Assembler::min(), Move(), v8::base::internal::result, TruncateDoubleToInt32(), v8::internal::value, v8::internal::MacroAssembler::VFPCompareAndSetFlags(), and v8::internal::Assembler::vrintn().

+ Here is the call graph for this function:

◆ TruncateDoubleToInt32()

void v8::internal::maglev::MaglevAssembler::TruncateDoubleToInt32 ( Register  dst,
DoubleRegister  src 
)

Definition at line 498 of file maglev-assembler-arm.cc.

498  {
499  ZoneLabelRef done(this);
500  Label* slow_path = MakeDeferredCode(
501  [](MaglevAssembler* masm, DoubleRegister src, Register dst,
502  ZoneLabelRef done) {
503  __ push(lr);
505  __ vstr(src, MemOperand(sp, 0));
506  __ CallBuiltin(Builtin::kDoubleToI);
507  __ ldr(dst, MemOperand(sp, 0));
508  __ add(sp, sp, Operand(kDoubleSize));
509  __ pop(lr);
510  __ Jump(*done);
511  },
512  src, dst, done);
513  TryInlineTruncateDoubleToI(dst, src, *done);
514  Jump(slow_path);
515  bind(*done);
516 }
void AllocateStackSpace(Register bytes)
void TryInlineTruncateDoubleToI(Register result, DwVfpRegister input, Label *done)

References __, v8::internal::Assembler::add(), v8::internal::MacroAssembler::AllocateStackSpace(), v8::internal::Assembler::bind(), CallBuiltin(), Jump(), v8::internal::kDoubleSize, v8::internal::Assembler::ldr(), MakeDeferredCode(), v8::internal::MacroAssembler::pop(), v8::internal::MacroAssembler::push(), v8::internal::MacroAssembler::TryInlineTruncateDoubleToI(), and v8::internal::Assembler::vstr().

Referenced by ToUint8Clamped().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ TryChangeFloat64ToIndex()

void v8::internal::maglev::MaglevAssembler::TryChangeFloat64ToIndex ( Register  result,
DoubleRegister  value,
Label success,
Label fail 
)

Definition at line 589 of file maglev-assembler-arm.cc.

591  {
592  UseScratchRegisterScope temps(this);
593  LowDwVfpRegister low_double = temps.AcquireLowD();
594  SwVfpRegister temp_vfps = low_double.low();
595  DoubleRegister converted_back = low_double;
596  // Convert the input float64 value to int32.
597  vcvt_s32_f64(temp_vfps, value);
598  vmov(result, temp_vfps);
599  // Convert that int32 value back to float64.
600  vcvt_f64_s32(converted_back, temp_vfps);
601  // Check that the result of the float64->int32->float64 is equal to
602  // the input (i.e. that the conversion didn't truncate).
603  VFPCompareAndSetFlags(value, converted_back);
604  JumpIf(kNotEqual, fail);
605  Jump(success);
606 }
void vcvt_s32_f64(const SwVfpRegister dst, const DwVfpRegister src, VFPConversionMode mode=kDefaultRoundToZero, const Condition cond=al)

References v8::internal::UseScratchRegisterScope::AcquireLowD(), Jump(), JumpIf(), v8::internal::kNotEqual, v8::internal::LowDwVfpRegister::low(), v8::base::internal::result, v8::internal::value, v8::internal::Assembler::vcvt_f64_s32(), v8::internal::Assembler::vcvt_s32_f64(), v8::internal::MacroAssembler::VFPCompareAndSetFlags(), and v8::internal::Assembler::vmov().

+ Here is the call graph for this function:

◆ TryMigrateInstance()

void v8::internal::maglev::MaglevAssembler::TryMigrateInstance ( Register  object,
RegisterSnapshot register_snapshot,
Label fail 
)

Definition at line 677 of file maglev-assembler.cc.

679  {
680  Register return_val = Register::no_reg();
681  {
682  SaveRegisterStateForCall save_register_state(this, register_snapshot);
683 
684  Push(object);
685  Move(kContextRegister, native_context().object());
686  CallRuntime(Runtime::kTryMigrateInstance);
687  save_register_state.DefineSafepoint();
688 
689  // Make sure the return value is preserved across the live register
690  // restoring pop all.
691  return_val = kReturnRegister0;
692  MaglevAssembler::TemporaryRegisterScope temps(this);
693  Register scratch = temps.AcquireScratch();
694  if (register_snapshot.live_registers.has(return_val)) {
695  DCHECK(!register_snapshot.live_registers.has(scratch));
696  Move(scratch, return_val);
697  return_val = scratch;
698  }
699  }
700 
701  // On failure, the returned value is Smi zero.
702  CompareTaggedAndJumpIf(return_val, Smi::zero(), kEqual, fail);
703 }
compiler::NativeContextRef native_context() const
void CompareTaggedAndJumpIf(Register reg, Tagged< Smi > smi, Condition cond, Label *target, Label::Distance distance=Label::kFar)

References v8::internal::maglev::MaglevAssembler::TemporaryRegisterScope::AcquireScratch(), CallRuntime(), CompareTaggedAndJumpIf(), v8::internal::DCHECK(), v8::internal::maglev::SaveRegisterStateForCall::DefineSafepoint(), v8::internal::RegListBase< RegisterT >::has(), v8::internal::kContextRegister, v8::internal::kEqual, v8::internal::kReturnRegister0, v8::internal::maglev::RegisterSnapshot::live_registers, Move(), native_context(), v8::internal::Register::no_reg(), Push(), and v8::internal::Smi::zero().

+ Here is the call graph for this function:

◆ TryMigrateInstanceAndMarkMapAsMigrationTarget()

void v8::internal::maglev::MaglevAssembler::TryMigrateInstanceAndMarkMapAsMigrationTarget ( Register  object,
RegisterSnapshot register_snapshot 
)

Definition at line 705 of file maglev-assembler.cc.

706  {
707  SaveRegisterStateForCall save_register_state(this, register_snapshot);
708  Push(object);
709  Move(kContextRegister, native_context().object());
710  CallRuntime(Runtime::kTryMigrateInstanceAndMarkMapAsMigrationTarget);
711  save_register_state.DefineSafepoint();
712 }

References CallRuntime(), v8::internal::maglev::SaveRegisterStateForCall::DefineSafepoint(), v8::internal::kContextRegister, Move(), native_context(), and Push().

+ Here is the call graph for this function:

◆ TryTruncateDoubleToInt32()

void v8::internal::maglev::MaglevAssembler::TryTruncateDoubleToInt32 ( Register  dst,
DoubleRegister  src,
Label fail 
)

Definition at line 518 of file maglev-assembler-arm.cc.

519  {
520  UseScratchRegisterScope temps(this);
521  LowDwVfpRegister low_double = temps.AcquireLowD();
522  SwVfpRegister temp_vfps = low_double.low();
523  DoubleRegister converted_back = low_double;
524  Label done;
525 
526  // Convert the input float64 value to int32.
527  vcvt_s32_f64(temp_vfps, src);
528  vmov(dst, temp_vfps);
529 
530  // Convert that int32 value back to float64.
531  vcvt_f64_s32(converted_back, temp_vfps);
532 
533  // Check that the result of the float64->int32->float64 is equal to the input
534  // (i.e. that the conversion didn't truncate.
535  VFPCompareAndSetFlags(src, converted_back);
536  JumpIf(kNotEqual, fail);
537 
538  // Check if {input} is -0.
539  tst(dst, dst);
540  JumpIf(kNotEqual, &done);
541 
542  // In case of 0, we need to check the high bits for the IEEE -0 pattern.
543  {
544  Register high_word32_of_input = temps.Acquire();
545  VmovHigh(high_word32_of_input, src);
546  cmp(high_word32_of_input, Operand(0));
547  JumpIf(kLessThan, fail);
548  }
549 
550  bind(&done);
551 }

References v8::internal::UseScratchRegisterScope::Acquire(), v8::internal::UseScratchRegisterScope::AcquireLowD(), v8::internal::Assembler::bind(), v8::internal::Assembler::cmp(), JumpIf(), v8::internal::kLessThan, v8::internal::kNotEqual, v8::internal::LowDwVfpRegister::low(), v8::internal::Assembler::tst(), v8::internal::Assembler::vcvt_f64_s32(), v8::internal::Assembler::vcvt_s32_f64(), v8::internal::MacroAssembler::VFPCompareAndSetFlags(), v8::internal::Assembler::vmov(), and v8::internal::MacroAssembler::VmovHigh().

+ Here is the call graph for this function:

◆ TryTruncateDoubleToUint32()

void v8::internal::maglev::MaglevAssembler::TryTruncateDoubleToUint32 ( Register  dst,
DoubleRegister  src,
Label fail 
)

Definition at line 553 of file maglev-assembler-arm.cc.

555  {
556  UseScratchRegisterScope temps(this);
557  LowDwVfpRegister low_double = temps.AcquireLowD();
558  SwVfpRegister temp_vfps = low_double.low();
559  DoubleRegister converted_back = low_double;
560  Label done;
561 
562  // Convert the input float64 value to uint32.
563  vcvt_u32_f64(temp_vfps, src);
564  vmov(dst, temp_vfps);
565 
566  // Convert that uint32 value back to float64.
567  vcvt_f64_u32(converted_back, temp_vfps);
568 
569  // Check that the result of the float64->uint32->float64 is equal to the input
570  // (i.e. that the conversion didn't truncate.
571  VFPCompareAndSetFlags(src, converted_back);
572  JumpIf(kNotEqual, fail);
573 
574  // Check if {input} is -0.
575  tst(dst, dst);
576  JumpIf(kNotEqual, &done);
577 
578  // In case of 0, we need to check the high bits for the IEEE -0 pattern.
579  {
580  Register high_word32_of_input = temps.Acquire();
581  VmovHigh(high_word32_of_input, src);
582  cmp(high_word32_of_input, Operand(0));
583  JumpIf(kLessThan, fail);
584  }
585 
586  bind(&done);
587 }
void vcvt_u32_f64(const SwVfpRegister dst, const DwVfpRegister src, VFPConversionMode mode=kDefaultRoundToZero, const Condition cond=al)
void vcvt_f64_u32(const DwVfpRegister dst, const SwVfpRegister src, VFPConversionMode mode=kDefaultRoundToZero, const Condition cond=al)

References v8::internal::UseScratchRegisterScope::Acquire(), v8::internal::UseScratchRegisterScope::AcquireLowD(), v8::internal::Assembler::bind(), v8::internal::Assembler::cmp(), JumpIf(), v8::internal::kLessThan, v8::internal::kNotEqual, v8::internal::LowDwVfpRegister::low(), v8::internal::Assembler::tst(), v8::internal::Assembler::vcvt_f64_u32(), v8::internal::Assembler::vcvt_u32_f64(), v8::internal::MacroAssembler::VFPCompareAndSetFlags(), v8::internal::Assembler::vmov(), and v8::internal::MacroAssembler::VmovHigh().

+ Here is the call graph for this function:

◆ TypedArrayElementOperand()

MemOperand v8::internal::maglev::MaglevAssembler::TypedArrayElementOperand ( Register  data_pointer,
Register  index,
int  element_size 
)
inline

Definition at line 313 of file maglev-assembler-arm-inl.h.

314  {
315  add(data_pointer, data_pointer,
316  Operand(index, LSL, ShiftFromScale(element_size)));
317  return MemOperand(data_pointer);
318 }

References v8::internal::Assembler::add(), v8::internal::index, v8::internal::LSL, and v8::internal::maglev::ShiftFromScale().

+ Here is the call graph for this function:

◆ Uint32ToDouble()

void v8::internal::maglev::MaglevAssembler::Uint32ToDouble ( DoubleRegister  result,
Register  src 
)
inline

Definition at line 1273 of file maglev-assembler-arm-inl.h.

1274  {
1275  UseScratchRegisterScope temps(this);
1276  SwVfpRegister temp_vfps = SwVfpRegister::no_reg();
1277  if (result.code() < 16) {
1278  temp_vfps = LowDwVfpRegister::from_code(result.code()).low();
1279  } else {
1280  temp_vfps = temps.AcquireS();
1281  }
1282  vmov(temp_vfps, src);
1283  vcvt_f64_u32(result, temp_vfps);
1284 }

References v8::internal::UseScratchRegisterScope::AcquireS(), v8::internal::RegisterBase< LowDwVfpRegister, kDoubleCode_d16 >::from_code(), v8::internal::LowDwVfpRegister::low(), v8::internal::RegisterBase< SwVfpRegister, kSwVfpAfterLast >::no_reg(), v8::base::internal::result, v8::internal::Assembler::vcvt_f64_u32(), and v8::internal::Assembler::vmov().

Referenced by MaterialiseValueNode().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ UncheckedSmiTagInt32() [1/2]

void v8::internal::maglev::MaglevAssembler::UncheckedSmiTagInt32 ( Register  dst,
Register  src 
)
inline

Definition at line 839 of file maglev-assembler-inl.h.

839  {
840  SmiTagInt32AndSetFlags(dst, src);
841  if (!SmiValuesAre32Bits()) {
842  Assert(kNoOverflow, AbortReason::kInputDoesNotFitSmi);
843  }
844 }

References v8::internal::MacroAssembler::Assert(), v8::internal::kNoOverflow, SmiTagInt32AndSetFlags(), and v8::internal::SmiValuesAre32Bits().

Referenced by UncheckedSmiTagInt32().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ UncheckedSmiTagInt32() [2/2]

void v8::internal::maglev::MaglevAssembler::UncheckedSmiTagInt32 ( Register  reg)
inline

Definition at line 846 of file maglev-assembler-inl.h.

846  {
847  UncheckedSmiTagInt32(reg, reg);
848 }
void UncheckedSmiTagInt32(Register dst, Register src)

References UncheckedSmiTagInt32().

+ Here is the call graph for this function:

◆ UncheckedSmiTagUint32() [1/2]

void v8::internal::maglev::MaglevAssembler::UncheckedSmiTagUint32 ( Register  dst,
Register  src 
)
inline

Definition at line 897 of file maglev-assembler-inl.h.

897  {
898  if (v8_flags.debug_code) {
899  // Perform an unsigned comparison against Smi::kMaxValue.
901  AbortReason::kInputDoesNotFitSmi);
902  }
903  SmiTagInt32AndSetFlags(dst, src);
904  if (!SmiValuesAre32Bits()) {
905  Assert(kNoOverflow, AbortReason::kInputDoesNotFitSmi);
906  }
907 }

References v8::internal::MacroAssembler::Assert(), CompareInt32AndAssert(), v8::internal::Smi::kMaxValue, v8::internal::kNoOverflow, v8::internal::kUnsignedLessThanEqual, SmiTagInt32AndSetFlags(), v8::internal::SmiValuesAre32Bits(), and v8::internal::v8_flags.

Referenced by UncheckedSmiTagUint32().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ UncheckedSmiTagUint32() [2/2]

void v8::internal::maglev::MaglevAssembler::UncheckedSmiTagUint32 ( Register  reg)
inline

Definition at line 909 of file maglev-assembler-inl.h.

909  {
910  UncheckedSmiTagUint32(reg, reg);
911 }
void UncheckedSmiTagUint32(Register dst, Register src)

References UncheckedSmiTagUint32().

+ Here is the call graph for this function:

Member Data Documentation

◆ code_gen_state_

MaglevCodeGenState* const v8::internal::maglev::MaglevAssembler::code_gen_state_
private

Definition at line 860 of file maglev-assembler.h.

Referenced by IsDeoptLabel().

◆ scratch_register_scope_


The documentation for this class was generated from the following files: